我开始学习OpenGL,并尝试通过VBO扩展我的程序。我有以下代码:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8081" />
我的物体是一个球和一个酒吧。首先,我只用球测试了代码。它出现。然后我想添加吧。酒吧出现了。我的问题是,当酒吧出现时,球消失了。我希望球和杆都能同时出现。有人可以帮助我,告诉我我的错误在哪里吗?
答案 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);