OpenGL的工作流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL的工作流程相关的知识,希望对你有一定的参考价值。

OpenGL的工作流程


1. 几何操作
(1) 针对每个顶点的操作
每个顶点的空间坐标需要经过模型取景矩阵变换、法向矢量矩阵变换,若允许纹理自动生成,则由变换后的顶点坐标所生成的新纹理坐标替代原有的纹理坐标,再经过当前纹理矩阵变换,传递到几何要素装配步骤。
(2) 几何要素装配
不同的几何要素类型决定采取不同的几何要素装配方式。若使用平直明暗处理,线或多边形的所有顶点颜色则相同;若使用裁剪平面,裁剪后的每个顶点的空间坐标由投影矩阵进行变换,再由标准取景平面进行裁剪,再进行视口和深度变换操作。如果几何要素是多边形,还要做剔除检验,最后生成点图案、线宽、点尺寸的像素段,并赋上颜色、深度值。
2. 像素操作
由主机读入的像素首先解压缩成适当的组份数目,然后进行数据放大、偏置,并经过像素映射处理,根据数据类型限制在适当的取值范围内,像素最后写入纹理内存,使用纹理映射或光栅化生成像素段;如果像素数据由帧缓冲区读入,则执行放大、偏置、映射、调整等像素操作,再以适当的格式压缩。像素拷贝操作相当于解压缩和传输操作的组合,只是压缩和解压缩不是必须的,数据写入帧缓冲区前的传输操作只发生一次。
3. 像素段操作
当使用纹理映射时,每个游戏像素段将产生纹素,再进行雾效果计算、反走样处理。接着进行裁剪处理、一致性检验(只在RGBA模式下使用)、模板检验、深度缓冲区检验和抖动处理。若采用颜色索引模式,像素还要进行逻辑操作;在RGBA模式下则进行混合操作。
根据着色模式不同,决定像素段采取颜色屏蔽还是指数屏蔽,屏蔽操作之后的像素段将写入到适当的帧缓冲区。如果像素写入模板或深度缓冲区,则进行模板和深度检验屏蔽,而不用执行混合、抖动和逻辑操作。
对于创建一个三维图形的基本步骤,大致可以包括以下三个主要环节:
(1)建模:包括几何建模和行为建模,几何建模处理物体的几何和形状的表示,行为建模处理物体的运动和行为的描述; 
(2)设置视点:描述观察者的空间位置;
(3)设置环境:描述环境的特征,如:光源、空气能见度等。
OpenGL的绘制过程多种多样,内容非常丰富,主要提供以下几种对三维物体的绘制方式:
(1) 线框绘制方式(Wire frame):绘制三维物体的网格轮廓线。
(2) 深度优先线框绘制方式(Depth cued):采用线框方式绘图,使远处的物体比近处的物体暗一些,以模拟人眼看物体的效果。
(3) 反走样线框绘制方式(Antialiased):采用线框方式绘图,绘制时采用反走样技术,以减少图形线条的参差不齐。
(4) 平面明暗处理方式(Flat shading):对模型的平面单元按光照进行着色,但不进行光滑处理。
(5) 光滑明暗处理方式(Smooth shading):对模型按光照绘制的过程进行光滑处理,这种方式更接近于现实。
(6) 加阴影和纹理的方式(Shadow and Texture):在模型表面贴上纹理甚至加上光照阴影效果,使三维场景像照片一样逼真。
(7) 运动模糊绘制方式(Motion blured):模拟物体运动时人眼观察所觉察到的动感模糊现象。
(8) 大气环境效果(Atmosphere effects):在三维场景中加入雾等大气环境效果,使人有身临其境之感。 
(9) 深度域效果(Depth of effects):类似于照相机镜头效果,模拟在聚焦点处清晰。

以上是关于OpenGL的工作流程的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL-渲染流程

OpenGL OpenGL管线 与 可编程管线流程

OpenGL:QApplication的执行流程

OpenGL 的缓冲区是如何工作的?

OpenGL:深度缓冲向后工作,是不是按缠绕顺序?

OpenGL库不工作