Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL动态CPU蒙皮不渲染_C++_Multithreading_Macos_Opengl - Fatal编程技术网

C++ OpenGL动态CPU蒙皮不渲染

C++ OpenGL动态CPU蒙皮不渲染,c++,multithreading,macos,opengl,C++,Multithreading,Macos,Opengl,我有一个非常模糊的问题,希望有人能帮我解决。我已经在CPU上使用OSX上的背景线程实现了顶点蒙皮(GPU太慢了,因为在顶点着色器中查找骨骼变换的性能很差)。我不需要共享上下文,因为没有进行GL调用。我在进程堆中分配一个足够大的缓冲区来容纳角色的顶点。我在背景线程上设置缓冲区的蒙皮和动画。在主线程中,我只需将缓冲区下放到我的VBO中,与缓冲区更新的末尾同步,这样我就不会在顶点中撕裂。VBO以前已绑定到VAO(每个VBO每个角色实例一个VAO)。所以我只需要绑定VAO并绘制网格。到目前为止还不是很难

我有一个非常模糊的问题,希望有人能帮我解决。我已经在CPU上使用OSX上的背景线程实现了顶点蒙皮(GPU太慢了,因为在顶点着色器中查找骨骼变换的性能很差)。我不需要共享上下文,因为没有进行GL调用。我在进程堆中分配一个足够大的缓冲区来容纳角色的顶点。我在背景线程上设置缓冲区的蒙皮和动画。在主线程中,我只需将缓冲区下放到我的VBO中,与缓冲区更新的末尾同步,这样我就不会在顶点中撕裂。VBO以前已绑定到VAO(每个VBO每个角色实例一个VAO)。所以我只需要绑定VAO并绘制网格。到目前为止还不是很难。单个IBO绑定到每个角色的所有VAO实例

这就是问题所在。如果我只有一个字符实例,代码就可以完美地工作。我有一个可爱的小武士公主在做她的无聊动画。当我添加第二个实例时,什么也没有发生——只有第一个实例渲染

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


如果你需要看源代码,我可以很容易地上传。我只是想知道是否有人听说过像我在Mac上处理OpenGL中的缓冲区对象时所看到的那种奇怪现象。

明白了。其他字符中的VAO设置不正确,因为我没有将IBO绑定到它们。代码中的输入错误。