//之所以转载这篇文章,是因为在学习openGL的过程中,我只是不断地学习一些函数接口的使用方法,而自己只能模糊的理解openGL的底层机制,这篇文章是作者对底层处理的简要介绍,只有理解了底层的东西,你才能真正地理解openGL。
我对于OpenGL的学习,只是简单学习了API函数的使用,而没有去关注OpenGL底层的绘制过程。然而对OpenGL底层绘制过程的了解,对学习OpenGL大有帮助。我查了些资料,讲解内容大同小异。
一 渲染管线概念
硬件概念:渲染管线在显卡中指的是一系列处理单元,主要包括顶点着色器和像素着色器,是显卡的核心,渲染管线越多,就可以形成流水线操作,显卡性能就会越好。
软件概念:在OpenGL中,渲染管线实际上是指的一系列的绘制过程,输入是一系列指定的顶点,经过渲染管线这一系列过程后,输出一帧想要的图像。
二 OpenGL渲染管线过程:
OpenGL渲染管线的操作过程主要包括以下几部分:
1) 顶点变换
2) 图元组装
3) 图元处理
4) 片元处理
5) 光栅化操作
1、顶点变换
这个阶段主要是对输入的顶点进行逐个处理,这些顶点都包括很多属性(如位置、颜色、法线和纹理坐标等),经过处理后,输出是经过变换后的顶点属性及关联信息。
主要过程:顶点变换(几何变换和投影变换)、光照计算、纹理坐标变换和生成
2、图元组装
这个阶段主要是按照输入的变换后的顶点属性和关联信息,组装形成图元。
3、图元处理
这个阶段主要是对输入的图元进行处理,输出片元(帧缓存中更新象素属性的数据)信息,该片元信息是对顶点变换阶段得出的属性进行插值处理得到的。
主要过程:视景裁剪、背面剔除
4、片元处理
这个阶段的输入为经过插值计算后的最终片元信息,经过处理后,输出信息为片元的深度和颜色值。
主要过程:纹理、雾化、颜色汇总(包括纹理颜色,光照颜色,主颜色等)
5、光栅化操作
这个阶段的输入为像素位置和片元的深度、颜色值等信息,经过一系列的测试(剪切测试、Alpha测试、模板测试和深度测试)后形成像素的颜色。
主要过程:剪切测试、Alpha测试、模板测试和深度测试、写入帧缓存
//转自:http://hi.baidu.com/impengpeng/item/c7a2f3a0c566b4756dd4557a(由于本人是新手,如果你觉得转载的该文章有错误,请指正,谢谢看官)