我正在开发一个真实世界的应用程序,用于在屏幕上渲染纯白色多边形,并随着时间的推移更改其alpha值。我正在尝试学习如何使用GLTriangleBatch来执行此操作(我很了解C ++,但不是很了解OpenGL),并且无法在线找到任何好的示例。到目前为止,我已经找到了一些资源,这些资源使我将下面的代码放在一起,但我仍然对某些部分感到困惑:
GLTriangleBatch myTriangles;
myTriangles.BeginMesh(1000000); // Include how many vertices you have: 1???
myTriangles.AddTriangle(...); // Add a triangle: 2???
// Repeat for all triangles for this batch
myTriangles.End(); // Done adding triangles
myTriangles.Draw(); // Draw the triangles
我用???标记了我感到困惑的部分,问题显示如下:
问题1:这个顶点的数量是否必须精确,或者是否可以高估和/或低估?此外,这个顶点数量是代表“批处理”顶点,还是每个三角形的各个顶点(例如2个连接的三角形有2个共享顶点需要6个顶点或4个?)
问题2:参数是:
答案 0 :(得分:3)
这个GLTriangleBatch
类显然是随OpenGL超级圣经书提供的框架的一部分。它不是OpenGL标准的一部分(OpenGL是普通的C API)。
至于第一个问题,我假设nMaxVerts
的{{1}}参数是你想要绘制的顶点的上限(每个三角形= 3个顶点)。因此,您可以将其设置为精确值或高估值。但您必须找到一些文档或查看source才能确定。
对于第二个问题,是BeginMesh()
是构成三角形的三个位置。
verts[3]
是三角形的Face Normal。它用于照明计算。最后一个成员vNorms
是三角形的Texture Coordinates。这些用于纹理映射。如果不将纹理应用于网格,则可以将它们设置为零。