我正在使用OpenGL和C来创建2D渲染引擎。我正在学习VBO以及如何将它们用于非立即模式渲染。我一直在阅读:http://www.opengl.org/wiki/Vertex_Buffer_Object
教程建议如下:
struct MyVertex
{
float x, y, z; //Vertex
float nx, ny, nz; //Normal
float s0, t0; //Texcoord0
float s1, t1; //Texcoord1
float s2, t2; //Texcoord2
float padding[4];
};
我不需要Normal值,我不确定单个顶点有三个纹理坐标的方式或原因。
我认为我应该需要的是Vertex(XYZ)和一个Texcoord(s0,t0< - 仍然不知道那些意思)。
答案 0 :(得分:1)
这只不过是一个例子;不要将该顶点格式视为福音或甚至是建议。实际上,在任何严肃的应用中,人们都不会使用这么多花车。
在任何情况下,如果你想删除这些属性,那很好。这取决于你。
至于为什么人们可能需要3组纹理坐标,这是因为一组有三组纹理映射到表面。做这样的事情是有原因的,但在实践中这是相当罕见的。
此外,OpenGL有一种不同的命名纹理坐标的方法。 OpenGL使用“ST”而不是像其他大多数事情那样“UV”。