文件名称:顶点着色器工作原理-pt100换算表
文件大小:20.23MB
文件格式:PDF
更新时间:2024-07-31 06:22:21
OpenGL ES
▲图 3-17 OpenGL ES 2.0 顶点着色器工作原理 attribute 变量指的是 3D 物体中每个顶点各自不同的信息所属的变量,一般顶点的位置、 颜色、法向量等每个顶点各自不同的信息都是以 attribute 变量的方式传入顶点着色器的。 uniform 变量指的是对于同一组顶点组成的单个 3D 物体中所有顶点都相同的量,一般为 场景中当前的光源位置、当前的摄像机位置、投影系列矩阵等。 varying 变量(易变变量)是从顶点着色器计算产生并传递到片元着色器的数据变量。顶 点着色器可以使用易变变量来传递需要插值到片元的颜色、法向量、纹理坐标等任意值。 内建输出变量 gl_Position、gl_FrontFacing 和 gl_PointSize 等。gl_Position 是经过变换矩阵 变换、投影后顶点的最终位置,gl_FrontFacing 指的是片元所在面的朝向,gl_PointSize 指的是点 的大小。 需要特别注意的是,易变变量在顶点着色器赋值后并不是直接将赋的值送入到后继的片元着 色器中,而是在光栅化阶段由管线根据片元所属图元各个顶点对应的顶点着色器对此易变变量的 赋值情况及片元与各顶点的位置关系插值产生,图 3-18 说明了这个问题。 ▲图 3-18 易变变量的工作原理 说明 有一些数学知识的读者可能会想到一个问题,对每个片元进行一次插值计算将 会非常耗费时间,严重影响性能。幸运的是,OpenGL ES 2.0 的设计者也考虑到了这 个问题,这些插值操作都是由 GPU 中的专用硬件实现的,因此速度很快,不影响性 能。 4.图元装配 这个阶段主要有两个任务,一个是图元组装,另一个是图元处理。所谓图元组装是指顶点数 据根据设置的绘制方式被结合成完整的图元。例如,点绘制方式下每个图元仅需要一个单独的顶 点,此方式下每个顶点为一个图元;线段绘制方式每个图元则需要两个顶点,此方式下每两个顶 点构成一个图元;三角形绘制方式下需要 3 个顶点构成一个图元。