渲染管道(2)应用阶段“顶点数据”

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从应用程序传入数据,并设置顶点对应的属性信息和内存布局。

eg. 四边形的顶点数据包括了顶点坐标、顶点颜色和顶点的纹理坐标。
在这里插入图片描述

  • 数据索引

对于一个具有几万个三角面的复杂模型,用三角形网格来近似表示物体,用指定的3个顶点来定义三角形。由于相邻三角形会存在顶点共用的情况,尤其在物体网格非常复杂的情况下,冗余数据会非常多。我们可以通过使用索引来避免共享顶点间数据的多余,也就是使用顶点缓存对象(Vertex Buffer Object,VBO)。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/thefist11cc/article/details/124062809