Raz*_*orm 2 c++ opengl ogre3d visual-c++
我正在使用支持OpenGL模式的Ogre3d引擎.
我有一个名为的对象Chunk创建了一个Ogre::ManualObject.因为创建ManualObject需要花费一些时间我将任务放到一个新线程上.
不幸的是,在线程创建之后ManualObject我现在得到以下OgreException:
"无法在GLHardwareVertexBuffer :: GLHardwareVertexBuffer中创建GL顶点缓冲区"
glGenBuffersARB( 1, &mBufferId );
if (!mBufferId)
{
OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR,
"Cannot create GL vertex buffer",
"GLHardwareVertexBuffer::
}
Run Code Online (Sandbox Code Playgroud)
这表明glGenBuffersARB()没有正确填充mBufferId.
我无法弄清楚造成这种情况的原因,有什么建议吗?
因为创建ManualObject需要一些时间,所以我将任务放到一个新线程上.
这就是你的问题.OpenGL上下文一次只能在一个线程中激活.如果从没有OpenGL上下文绑定的线程调用OpenGL命令,那么你得到的只是错误.