虚假的自己实现:一句glBufferData就能把vertex array和index array发送到显存,一句glDrawArray或者glDrawElement就能完成光栅化的绘制过程,深度测试方法用状态机的上下文即可一键指定。
真实的自己实现:
1、遍历每个像素,往三维世界做垂线;
2、每三三一组遍历index array取出三个能构成一个三角形的vertex,首尾相接组成的三个向量分别和你投进屏幕的这个点与三个点的连线组成的向量叉乘,根据正负判断这个像素在三角形内还是外,
3、然后调用shader计算着色,点与点之间的区域用三角形重心坐标插值,对于多个三角形在屏幕深度方向上的重叠,
4、单独开个尺寸为屏幕分辨率的二维数组作为深度缓冲,每绘制一个像素进行深度测试,绘制在最前面的那个三角形上的像素颜色。