OpenGL动态CPU皮肤不渲染

时间:2015-06-11 13:50:09

标签: c++ multithreading macos opengl

我有一个非常模糊的问题,我希望有人可以提供帮助。我在CPU上使用后台线程在CPU上实现了顶点蒙皮(GPU太慢,因为在顶点着色器中查找骨骼变换的性能很差)。我不需要共享上下文,因为没有进行GL调用。我在进程堆中分配一个足够大的缓冲区来保存我的角色的顶点。我在后台线程上为缓冲区设置皮肤和动画。在主线程中我只是glBufferSubData()缓冲到我的VBO,与缓冲区更新的结束同步,所以我不会在我的顶点撕裂。 VBO先前已绑定到VAO(每个字符实例每个VBO一个VAO)。所以我只需要绑定VAO并绘制我的网格。到目前为止并不是很困难。单个IBO绑定到每个角色实例的所有VAO。

这就是问题。如果我只有一个字符实例,则代码完美无缺。我有一个可爱的小战士公主做她的空闲动画。我添加第二个实例的那一刻没有任何反应 - 只有第一个实例呈现。

所以最重要的问题是我做错了什么?我很确定我的VBO,IBO和VAO是正确的。每个实例都有一个单独的VBO和VAO。我关闭了索引(没有IBO),但实例仍然无法绘制,所以它不是恕我直言。我已经使用Mac OpenGL Profiler验证了状态,并且每个实例看起来都很好。由于我的glBufferSubData调用,是否有某种奇怪的刷新没有进行。 glMapBuffer太慢了!

如果您需要查看源代码,我可以轻松上传。只是想知道是否有人听说过在Mac上处理OpenGL缓冲对象时我所看到的奇怪现象。

0 个答案:

没有答案