很多书上介绍了渲染管线,往往严重脱离实际,不知道到底对应的程序代码是什么。作为程序员,在没有弄清代码流程和作用之前,所有的理论都很苍白。下面是一些补充说明。
1.顶点数据
指定顶点颜色(glColorPointer),法线(glNormalPointer),坐标(glVertextPointer),纹理坐标(glTexCoordPointer)。 如果有显示列表从显示列表中提取以上数据。 顶点坐标最终被添加为4纬的。 其中z =0, w = 1
2. 求值器,如果没有使用,则忽略。
3. 基于顶点的操作(Vertex Shader 自己编程完成)。 主要是五部分。
输入:顶点位置,法线,顶点颜色,裁剪平面,纹理,光照。
输出: 变换后的顶点位置,顶点颜色,法线
顶点位置变换,
法线变换,
裁剪平面变换,
纹理变换,
光照运算。
很多书上没有说【法线变换】和【裁剪平面变换】,这是不完整的。
另外,【裁剪平面变换】,可以认为是一种特殊的图元。下面是详细过程
1 . 利用【模型视图矩阵】进行模型视图变换。从局部坐标变换为【人眼的世界坐标】。
2.进行投影变换,进行正规(normalize)化。 实际的结果是
把实景体压缩成为立方体。具体参照OpenGL书上提供的【投影矩阵】。
3. 纹理坐标变换。利用【纹理变换矩阵】变换纹理坐标。
4 . 法线变换。利用【模型视图矩阵的逆的转置】变换法线方向。
5 . 与此同时,进行光照运算,利用变换后的法线和顶点坐标,当前的材
质,灯光坐标,灯光模型产生新的颜色或者颜色索引。
6. 如果有裁剪平面,裁剪平面也要根据【模型视图矩阵的逆】变换法线方向。
2. 图元装配(固定管线功能)。 【分散的点,转换为图元】
1.根据图元的类型,点,三角形,四边形,如果glShadeModel采用的是flat模型,则顶点使用同一种颜色。(注意:如果使用的是smooth模型,则送入光栅化阶段。)
2.如果有裁剪平面,则进行裁剪运算。
3.坐标按照标准正方体x=a w, y = aw, z = aw进行裁剪。其中a是计算出来的结果。
4.如果启用了选择,则进行选择,并报告。渲染管线停止。如果没有,则进行透视除法。和视口变换。
5.如果启用了隐藏面消除,则进行隐藏面消除操作。
3. 光栅化,向量几何图形转换为位图图像(固定管线功能)【对图元进行插值】
1. 根据线的宽度,线的stipples,顶点的大小,来决定窗口中的哪些栅格
被图元占用。
2. 颜色插值。与此同时,颜色和深度值也被安排到每一个【片段】。
3. 纹理坐标插值。
4. 片段着色器。【Fragment Shader 自己编程完成】
1. 通过片段的纹理坐标获取纹理颜色,然后与片段颜色进行混合。
2. 雾效果的计算。本阶段的结果是,每一个像素都有一个颜色值和深度值。
5. 光栅操作。【固定管线功能】
输入为像素位置,和颜色,深度。
1.裁剪测试。scissor test。注意与clip不同。
2.alpha测试。
3.深度测试。
5.模板测试
6.混合(也就是玻璃效果,在此时应用)

- 大小: 22.3 KB
分享到:
相关推荐
### OpenGL渲染管线与坐标变换详解 #### 一、引言 在计算机图形学领域,理解和掌握OpenGL渲染管线及其相关的坐标变换对于初学者来说至关重要。本文将深入探讨OpenGL渲染管线的基本概念,包括其内部组成和各个阶段...
OpenGL 1.4标准发布已经快到一年了,而支持它的显卡却不是很多。所以这么久才有一些关于OpenGL 1.4新特性的示例程序。 这个示例程序演示了OpenGL 1.4现今支持的五种贴图环绕模式。 ??顺带说一句,买廉价显卡...
顶点着色器和片段着色器是OpenGL渲染管线中的关键组件,它们共同协作,实现了从顶点数据到像素颜色的完整渲染过程。理解它们的工作原理和区别,对于开发高质量的OpenGL应用程序至关重要。通过本文的介绍,希望你能对...
二、OpenGL渲染管线与流程 三、OpenGL着色器编程 四、OpenGL纹理与材质 五、OpenGL灯光与阴影 六、OpenGL缓冲区与帧缓存 七、OpenGL高级特性与最新发展 八、如何学习OpenGL 九、OpenGL资源简介 一、OpenGL简介与...
OpenGL渲染管线是一个复杂的过程,涉及到多个阶段,包括Vertex Processing、Primitive Assembly、Rasterization和Pixel Processing。 在本资源中,我们使用`glMatrixMode`函数来设置当前矩阵为投影矩阵,然后使用`...
1.4 OpenGL渲染管线 7 1.4.1 准备向OpenGL传输数据 8 1.4.2 将数据传输到OpenGL 8 1.4.3 顶点着色 9 1.4.4 细分着色 9 1.4.5 几何着色 9 1.4.6 图元装配 9 1.4.7 剪切 9 1.4.8 光栅化 9 1.4.9 片元着色 10 ...
根据提供的文件信息,“OpenGL Rendering Pipeline”(OpenGL渲染管线)这一主题是计算机图形学中的核心概念之一,特别是对于那些从事3D图形开发的人来说至关重要。下面将详细介绍该知识点。 ### OpenGL渲染管线...
OpenGL ES渲染管线概述 OpenGL ES渲染管线是图形渲染的核心组件,负责将3D图形渲染到屏幕上。渲染管线可以分为多个阶段,每个阶段都执行特定的任务,包括读取顶点数据、顶点着色器、组装图元、光栅化图元、片元着色...
CGstart可执行程序可能是用于读取OFF文件并使用OpenGL渲染的程序,而CGstart可能是一个启动脚本或配置文件,用于配置渲染参数。 通过这个实例,你可以学习如何使用OpenGL解析OFF文件,理解渲染管线的工作原理,并...
1.5OpenGL渲染管线 1.5.1显示列表 1.5.2求值器 1.5.3基于顶点的操作 1.5.4图元装配 1.5.5像素操作 1.5.6纹理装配 1.5.7光栅化 1.5.8片断操作 1.6与OpenGL相关的函数库 1.6.1包含文件 1.6.2GLUT,OpenGL实用工具包 ...
OpenGL的固定功能管线是早期版本中的一种图形渲染方式,它处理顶点、颜色、纹理等操作,并自动执行光照计算。与现代的可编程管线相比,固定管线的灵活性较低,但实现简单。在本示例中,我们将使用固定管线来实现...
总之,OpenGL VC-VB图形编程涉及到的知识点包括但不限于OpenGL库的引入与链接、OpenGL函数的使用、OpenGL渲染管线的理解、图形的绘制与变换、光照与纹理的应用、以及事件处理等。通过深入学习和实践,你将能够创建出...
光栅化是OpenGL渲染管线中的关键步骤,它将几何图形转换为屏幕上的像素。着色是另一个重要环节,可以沿着顶点间的线段改变颜色,模拟光照效果。纹理贴图则允许我们将图像贴合到图形表面,增加细节和真实感。混合功能...
虽然文件中未详细列出这三个阶段的具体内容,但一般来说,OpenGL渲染管线可以包括顶点处理、图元装配、栅格化、片段处理等几个关键阶段。在顶点处理阶段,输入的顶点数据被处理并变换到屏幕空间;图元装配阶段将顶点...
1. **OpenGL编程基础**:理解OpenGL渲染管线的工作流程,学习如何设置顶点数据,控制图元的绘制。 2. **着色器编程**:掌握GLSL语言,编写顶点和片段着色器,实现自定义的光照、纹理和颜色处理。 3. **纹理处理**:...
`SurfaceTexture` 将相机预览流绑定到OpenGL纹理,这样我们就可以在OpenGL渲染管线中处理图像了。 滤镜效果通常通过创建自定义的OpenGL着色器实现。在OpenGL ES中,着色器是用GLSL(OpenGL Shading Language)编写...
总之,OpenGL边界填充算法是图形绘制中的关键技术,通过巧妙地利用扫描线算法和OpenGL渲染管线,可以高效地填充图形的内部区域,为用户提供丰富的视觉体验。开发者可以通过自定义片段着色器和优化策略,实现各种复杂...
内容中提到的“OpenGL渲染管线”、“API编程接口”、“渲染流程”、“着色器”等关键词暗示了文档将深入探讨OpenGL的核心概念和渲染技术。 下面将详细说明从标题、描述和部分内容中提炼的知识点: 1. OpenGL基础 ...