一点背景:
我正在推送缓冲级别上的GPU仿真器(如果你想知道NV2A),我正在尝试使用OpenGL实现绘图。我必须模拟的GPU命令包含每个顶点组件的单独指针(因此位置与雾坐标,颜色,纹理坐标等完全不同的内存地址) 其他数据,如顶点组件大小,类型和步幅也存在于推送缓冲区中,但这些数据与此问题并不真正相关。
我一直在阅读有关顶点数组对象的内容,但就我的测试而言,可以使用glVertexAttribPointer
设置的指针都应该相对于顶点缓冲区对象 - 我希望避免使用它,如我已经在内存中获得了数据的副本。
问题:
OpenGL是否可以使用单独的指针(不是由任何OpenGL API管理)为每个顶点组件绘制顶点?代码怎么样,粗糙?
PS:由于我在模拟GPU,我也必须考虑顶点着色器程序。我还没有研究过这些,所以对此也有任何建议。 TIA!
答案 0 :(得分:2)
您不需要使用VBO,如果没有绑定VBO,glVertexAttribPointer将采用正常的CPU指针(您可以调用glBindBuffer(GL_ARRAY_BUFFER, 0)
来确保)。是的,您可以为每个属性流设置一个地址。