一、OpenGL要解决的问题:
由于CPU和GPU处理数据的速度快慢不一样,容易导致数据饥饿问题。OpenGL通过设置缓存(GPU能够控制和管理的连接RAM),使得CPU和GPU能够异步执行数据,相互干扰性降低,提高两者的执行效率,避免数据饥饿问题。
二、渲染图像的OpenGL的程序执行的主要步骤:
1、从OpenGL的几何图元中设置数据,用于构建形状;
2、使用不同的着色器对输入的图元数据执行计算操作,判断位置、颜色以及其他渲染属性;
3、将输入图元的数学描述转换为与屏幕位置对应的像素片元,也成光栅化;
4、针对光栅化过程产生的每个片元,执行片元着色器,从而决定这个片元的最终颜色和位置;
5、如果有必要,可以对片元执行一些额外的操作。比如:判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合。
三、一些需要掌握的基本概念:
顶点(vertexs), 图元(primitives), 片元(fragments,又叫片断) ,像素(pixels)
阶段1. 顶点 ->图元
几何顶点被组合为图元(点,线段或多边形),然后图元被合成片元,最后片元被转换为帧缓存中的象素数据。
阶段2. 图元 ->片元
图元被分几步转换为片元:图元被适当的裁剪,颜色和纹理数据也相应作出必要的调整,相关的坐标被转换为窗口坐标。最后,光栅化将裁剪好的图元转换为片元。
1) 裁剪
在裁剪时点,线段和多边形处理略微不同。对于点,要么保留原始状态(在裁剪体内部),要么被裁掉(在裁剪体外部)。对于线段和多边形来说,如果部分在裁剪体外部,则需要在裁剪点生成新的几何顶点。对