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

OpenGL顶点数组指针,每个组件有不同的缓冲区,opengl,Opengl,一点背景: 我正在开发一个推送缓冲区级别的GPU仿真器(如果你想知道的话是NV2A),我正在尝试使用OpenGL实现这个图形。我必须模拟的GPU命令包含每个顶点组件的单独指针(因此位置位于与雾坐标、颜色、纹理坐标等完全不同的内存地址中) 其他数据,如顶点组件大小、类型和步幅也存在于推送缓冲区中,但这些数据实际上与此问题无关 我一直在阅读有关顶点数组对象的内容,但就我的测试而言,可以使用glvertexattributepointer设置的指针都应该是相对于顶点缓冲区对象的,这是我希望避免的,因为

一点背景:

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

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

问题是:

在OpenGL中,每个顶点组件是否可以使用单独的指针(不受任何OpenGL API管理)绘制顶点?代码会是什么样的,拉夫


PS:因为我在模拟GPU,所以我也必须考虑顶点着色器程序。我还没有做过这些,所以任何关于这方面的建议都是欢迎的。蒂亚

您不需要使用VBO,如果没有绑定VBO,则GLVERTEXAttributePointer将使用普通CPU指针(您可以调用
glBindBuffer(GL\u ARRAY\u BUFFER,0)
以确保)。是的,您可以为每个属性流设置一个地址。

您打算在核心配置文件或兼容性配置文件中使用OpenGL吗?@shoosh:我甚至不知道这意味着什么——恐怕我是OpenGL新手。但最大的兼容性是我的目标-ATI、NVidia和WinXP及更高版本上的其他主流卡。为什么要避免VBO?@kvark:既然顶点组件已经在内存中,我看不出有理由在它们上花费两次内存(VBO是实际的缓冲区,对吗?所以任何填充都必须作为一个副本进行,占用内存的两倍——我想速度也会受到影响。)