31 Oct 2011

OPENGL渲染管线 (ZT)

收藏到CSDN网摘




Click to zoom


第一章其实内容不多,主要就是渲染管线:

书中提到,如果读者刚开始涉足三维图形编程,可能会对接下来的内容感到吃力。读者现在可以跳过这部分内容,但在读完本书的每一章时,都应该重温一下图1-2。考虑到我当时很忙并且赶着把红宝书看完好去做毕设。所以这里我一定直接跳过了,只是后来读完每一章的时候,已经忘记去重温这张图了。好在毕设用到OPENGL不多,后来写图形学的作业就很吃力了。如果不是有前人的代码做参考,我想我也许到现在都还没写出来。

废话不说了,接下来逐个解释。

1. 显示列表 Display list

不管是像素还是几何图元,都要保存在显示列表里的。书上说还可以不保存,直接对数据进行处理,称作立即模式(immediate mode)。我到现在还没用过显示列表= =。第七章

2. 求值器 Evaluators

如果用的是参数化的曲线曲面,这里需要计算出顶点的坐标,因为所有的几何图元最终都要通过顶点来描述。它可以根据控制点产生表面法线,纹理坐标,颜色以及空间坐标值。第十二章

3. 基于顶点的操作 Per-vertex operations

就是把顶点变换为图元。原本我们的顶点都是世界坐标系中的,为了在屏幕中显示出来,需要将其转换为屏幕坐标。第三章

如果启用了纹理,它还会计算纹理坐标。如果启用光照,将会根据综合变换后的顶点、表面法线、光源位置、材料属性以及其他光照信息进行光照计算,产生最终的颜色值,这个在第五章讲述。

4. 图元装配 Primitive assembly

这里的主要内容是裁剪,消除位于半空间之外的那部分几何图元(如果你定义了其他裁切平面的话 第三章)。如果使用的是透视试图,这里还要进行透视除法的步骤。接下来是适口和深度操作(这里的深度操作说的不是消隐,其实我不知道它说的是什么。。囧)。图元装配生成完整的几何图元,也就是根据相关的颜色、深度(有时还有纹理坐标值以及和光栅化处理有关的一些指导信息)进行了变换和裁剪的顶点。

5. 像素操作 Pixel operations

首先,将来自系统内存的一个数组中的像素进行解包,从某种格式(像素的原始格式可能有很多种)解包为适当数量的数据成分。接着,这些数据被缩放、便宜,并根据一副像素图进行处理。处理结果先进行截取,然后写入到纹理内存或者发送到光栅化阶段。第八章

如果像素数据是从帧缓冲区中读取的,就对它们执行像素转换操作(缩放、偏移、映射和截取)。然后,这些结果被包装为一种适当的格式,并返回到系统内存的一个数组中。

6. 纹理装配 Texture assembly

我还没搞清楚是干嘛的,反正是对纹理图像进行一些处理。。第九章

7. 光栅化 Rasterization

光栅化就是把几何数据或数据像素转换成为片段fragment的过程。每个片段方块对应于帧缓冲区中的一个像素。这里要考虑直线的宽度、点的大小、抗锯齿等因素。

8. 片段操作 Per-fragment operations

在数据实际存储到帧缓冲区之前,将要执行一系列的操作。这些操作可能会修改甚至丢弃这些片段。所有这些操作都可以被启用或者禁用。

第一个可能执行的操作是纹理处理,将纹理单元texel应用到片段上。接着是雾计算、裁剪测试、alpha测试、模板测试和深度缓冲区测试(消隐被遮挡的表面)。随后执行的可能是混合、抖动、逻辑操作以及根据一位掩码的屏蔽操作。 第六章和第十章。

最后片段被绘制到适当的缓冲区,成为一个像素并到达它的最终栖息地。

OVER~

转自:
http://www.cnblogs.com/luluathena/archive/2010/08/20/1804540.html

No comments :

Post a Comment