渲染管道应用阶段“顶点数据”
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了渲染管道应用阶段“顶点数据”相关的知识,希望对你有一定的参考价值。
1. 定义
CPU用来为GPU后面的顶点着色器等阶段提供处理的数据,是渲染管线的数据主要来源。(在DirectX中在输入装配阶段(Input Assembler State)完成)
1.1 数据内容
- 模型信息:顶点坐标、纹理坐标,顶点法线、UV、切线、顶点颜色、索引列表…
- 变换矩阵:世界变换矩阵、VP矩阵(根据摄像机位置和fov等参数构建)
- 灯光、材质参数:shader、材质参数、灯光信息
1.2 图元
顶点数据在流水线中以图元的方式进行处理,常见的图元有:点、线和三角面。
eg. 在OpenGL,对应点(GL_POINTS)、线(GL_LINES)、线条(GL_LINE_STRIP)、三角面(GL_TRIANGLES),使用glGenVertexArrays()、glGenBuffers()、glBindBuffer()、glBindVertexArray()、glVertexAttribPointer()等API从应用程序传入数据,并设置顶点对应的属性信息和内存布局。
1.2.1 举例
四边形的顶点数据包括了顶点坐标、顶点颜色和顶点的纹理坐标。
1.2.2 数据索引
对于一个具有几万个三角面的复杂模型,用三角形网格来近似表示物体,用指定的3个顶点来定义三角形。由于相邻三角形会存在顶点共用的情况,尤其在物体网格非常复杂的情况下,冗余数据会非常多。我们可以通过使用索引来避免共享顶点间数据的多余,也就是使用顶点缓存对象(Vertex Buffer Object,VBO)。
以上是关于渲染管道应用阶段“顶点数据”的主要内容,如果未能解决你的问题,请参考以下文章