要在OpenGL中绘制,您需要指定一个顶点数组,然后使用索引将顶点数组连接在一起,形成基本的语法顺序。你可以用glDrawElements来做到这一点。要指定顶点,您可以使用glVertexPointer,您可以在其中指定一个参数“stride” - 数组中连续元素之间的间隔(即,如果将顶点存储在包含其他数据的结构中,则可以跨越其他数据)。在OpenGL中,你如何指定步伐?
这很好,但现在我使用的是Assimp,它指定了它在一个face结构中的索引。
struct aiFace {
unsigned int* indices;
unsigned int numIndices;
}
推测这是为了支持具有不同大小的面(具有三角形和四边形的网格)的网格。 Assimp非常好,可以选择对所有网格进行三角剖分,所以我可以保证所有的面都是相同的原始图。
因此,我真正想要的是能够迈出我的指标,因为这样的:
gl/*...uh...*/ElementPointer(
3,
GL_UNSIGNED_INT,
sizeof(unsigned int) /* skip past the num_indices field*/,
&faces[0]);
但我无法弄清楚如何做到这一点。 glDrawElements假定索引是一个连续的数组。有没有办法在OpenGL中做到这一点?