OpenGL顶点数组指针,每个组件不同的缓冲区

时间:2011-02-16 22:17:07

标签: opengl

一点背景:

我正在推送缓冲级别上的GPU仿真器(如果你想知道NV2A),我正在尝试使用OpenGL实现绘图。我必须模拟的GPU命令包含每个顶点组件的单独指针(因此位置与雾坐标,颜色,纹理坐标等完全不同的内存地址) 其他数据,如顶点组件大小,类型和步幅也存在于推送缓冲区中,但这些数据与此问题并不真正相关。

我一直在阅读有关顶点数组对象的内容,但就我的测试而言,可以使用glVertexAttribPointer设置的指针都应该相对于顶点缓冲区对象 - 我希望避免使用它,如我已经在内存中获得了数据的副本。

问题:

OpenGL是否可以使用单独的指针(不是由任何OpenGL API管理)为每个顶点组件绘制顶点?代码怎么样,粗糙?

PS:由于我在模拟GPU,我也必须考虑顶点着色器程序。我还没有研究过这些,所以对此也有任何建议。 TIA!

1 个答案:

答案 0 :(得分:2)

您不需要使用VBO,如果没有绑定VBO,glVertexAttribPointer将采用正常的CPU指针(您可以调用glBindBuffer(GL_ARRAY_BUFFER, 0)来确保)。是的,您可以为每个属性流设置一个地址。