【发布时间】:2013-03-10 11:50:23
【问题描述】:
您好,我在使用 VBO 绘图时遇到问题。所以我问了一个问题here。我找不到我的问题的答案。但是通过讨论那里给出的一个答案,我现在有另一个关于 VBO 进展的问题。我对它是什么以及做什么感到困惑。
在here我发现有人回答了
如果您将所有顶点数据放在一个数组中(数组:读作 malloc''ed 指针),另一个数组中的所有法线等。然后你的 步幅为 0。例如,如果顶点、法线等是这样存储的 :
[顶点0][顶点1][顶点2]...
[正常0][正常1][正常2]...
[texcoord0][texcoord1][texcoord2]...
如果你的顶点、法线等是这样包装的:
[vertex0][normal0][texcoord0][vertex1][normal1][texcoord1][vertex2][normal2][texcoord2]...
那么你应该设置一个非空步幅,它对应于偏移量 需要从一个元素切换到下一个元素。 (这个步幅被计算在内 顺便说一句)
从那个解释中,我认为步幅实际上是指缓冲区中一个顶点的结束与另一个顶点的开始之间的距离。在第一种情况下,它的值为 0,因为所有顶点都是连续存储的。纹理也是如此。但后来我在同一个线程中阅读了另一个关于跨步定义的答案。
关于 VBO 步幅往往有些混乱,主要是 因为它对 0 的特殊意义。
在这种情况下,“步幅”是指一个起点之间的距离 内存中的值,以及内存中下一个值的开始。这是 不是一个结束和下一个开始之间的距离。 因此,在作为结构数组的 VBO 中,每个 该结构的元素将是整个结构的大小。 请记住,结构填充会影响这一点。
这与另一个答案所说的相反。或者我对第一个答案的含义有误?谁能帮我解决这个问题。如果有人能举例回答,我将不胜感激。我在这个尚未解决的问题的开头给出了我实现 VBO 的链接。谢谢。
【问题讨论】:
标签: c++ opengl-es vbo blackberry-10 stride