无法与Java OpenGL VBO同时显示2个项目

时间:2016-01-04 07:28:02

标签: java opengl vbo

我开始学习OpenGL,并尝试通过VBO扩展我的程序。我有以下代码:

<Connector port="8080" protocol="HTTP/1.1"
     connectionTimeout="20000"
     URIEncoding="UTF-8"
     enableLookups="false"
     redirectPort="8081" />

我的物体是一个球和一个酒吧。首先,我只用球测试了代码。它出现。然后我想添加吧。酒吧出现了。我的问题是,当酒吧出现时,球消失了。我希望球和杆都能同时出现。有人可以帮助我,告诉我我的错误在哪里吗?

1 个答案:

答案 0 :(得分:1)

问题在于显示功能:您只为第二个缓冲区绑定指定了Vertex / Color / ...指针。原因是OpenGL始终在当前状态下运行。因此,如果绑定另一个缓冲区,则第一个缓冲区不再存在。因此,顶点指针仅在最后绑定的缓冲区上运行。绘图函数也是如此,它也只对当前设置的顶点指针进行操作。

如果你想要绘制两个,那么逻辑顺序必须看起来像这样:

//First object
glTranslatef/glScalef/... for object1
glBindBuffer(buffer1)

gl.glVertexPointer(...) and all the other pointers/glEnableClientStates

gl.glDrawArrays(vertNo);

//Now second object

glTranslatef/glScalef/... for object2
glBindBuffer(buffer2)

gl.glVertexPointer(...) and all the other pointers/glEnableClientStates

gl.glDrawArrays(vertNo1);