ARB_fragment_program学习:(一)可编程语言概要


基于GPU的可编程语言有很多,Opengl的扩展库ARB_fragment_program与ARB_vertex_program、D3Dd的vertex shader与pixel shader (这两个相当于编程语言中的汇编语言,比较底层,程序由汇编指令组成)、Opengl提出的shading language、nvidia出Cg语言、微软出的HLSL语言、ATI的RenderMonkey(这四种种相当于高级语言)。Cg语言可以和Opengl及D3D平台兼容,但只能用于nvidia的显卡。其他四种对显卡没有特殊要求,但只能在自己的平台下使用。

当今图形硬件流水线由下列固定顺序进行的阶段组成:顶点变换、图元装配和光栅化、片元纹理映射和着色、光栅化操作。

顶点变换:在每个顶点上执行一系列的数学操作。这些操作包括吧顶点位置变换到屏幕,为贴图产生纹理坐标,决定顶点颜色。

图元装配和光栅化:根据顶点序列把顶点装配成几何图元,然后对这些图片进行裁剪和挑选,对剩下的多边形进行光栅化。

插值、贴图和着色:图元被光栅化为片元后,在这个阶段执行一系列的贴图和数学操作,然后为每个片元确定一个最终颜色和新的深度。

光栅操作:在最后更新帧缓存前,执行一系列的测试操作,再把片元颜色和对应像素的颜色混合在一起。

可编程图形流水线:从图形硬件流水线中分离了顶点和片元处理,成为可编程单元。

可编程顶点处理器:载入顶点属性,顶点处理器重复的取出下一个指令执行它,直到顶点程序结束。事实上它执行的操作相当与图形流水线中的顶点变换。

可编程片元处理器:和顶点处理器相比,片元处理器还支持纹理操作。片元处理的输入是片元参数,而不是顶点属性。最终的运算结果是片元的颜色和新的深度值。 它执行的操作相当于流水线中的插值、贴图和着色与光栅操作

你可能感兴趣的:(OpenGL,graphics)