【发布时间】:2015-07-15 15:55:53
【问题描述】:
我正在尝试使用glMapData() 和glBufferSubData() 方法来修改现有的VBO。
我当前的代码如下:
public void updateBufferData(int vaoID, int vboID, long index, int value){
GL30.glBindVertexArray(vaoID); //bind VAO
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID); //bind VBO
IntBuffer buffer = storeDataInIntBuffer(new int[]{value}); //I'm not sure if I should do it like this?
GL15.glBufferSubData(vboID, index, buffer); //set data
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); //unbind VBO
GL30.glBindVertexArray(0); //unbind VAO
}
但是,当我调用此方法时,它似乎对 VBO 没有任何影响。渲染的对象还是一样的。
我很确定在调用 updateBufferData() 方法时,VBO/VAO 不会绑定到其他任何东西。
【问题讨论】:
-
这个问题没有错,但它相当专业。不久前,我尝试自己做这件事,但失败了。如果没有人回答这个问题并尝试给予更多关注,我会奖励这个问题。另外,您能否更清楚地了解实际行为是什么以及预期行为是什么?
-
鉴于当前信息,我已尽我所能编辑您的问题。如果有任何问题,请随时编辑。 stackoverflow.com/review/suggested-edits/8820876
-
@Joehot200 很好的编辑,谢谢。也很棒的cmets。
-
glBufferSubData的第一个参数应该是GL_ARRAY_BUFFER而不是 vbo ID。 -
@Alex 是的,这就像做梦一样。非常感谢。
标签: java opengl 3d buffer lwjgl