gpt4 book ai didi

c++ - 在什么情况下 glGenBuffers/glGenBuffersARB 会失败?

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:34 27 4
gpt4 key购买 nike

我正在使用支持 OpenGL 模式的 Ogre3d 引擎。

我有一个名为 Chunk 的对象,它创建了一个 Ogre::ManualObject。因为 ManualObject 的创建需要一些时间,所以我将任务放到了一个新线程上。

不幸的是,在线程创建 ManualObject 之后,我现在得到以下 OgreException:

"Cannot create GL vertex buffer in GLHardwareVertexBuffer::GLHardwareVertexBuffer"

我查看了代码,它失败了 at this stage :

glGenBuffersARB( 1, &mBufferId );

if (!mBufferId)
{
OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR,
"Cannot create GL vertex buffer",
"GLHardwareVertexBuffer::
}

这表明 glGenBuffersARB() 没有正确填充 mBufferId。

我不知道是什么原因造成的,有什么建议吗?

最佳答案

Because the creation of the ManualObject takes a bit of time I put the task onto a new thread.

这就是你的问题。 OpenGL 上下文一次只能在一个线程中处于事件状态。如果您从没有绑定(bind) OpenGL 上下文的线程调用 OpenGL 命令,您得到的只是错误。

关于c++ - 在什么情况下 glGenBuffers/glGenBuffersARB 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com