Я использую движок Ogre3d, поддерживающий режим OpenGL.
У меня есть объект под названием Chunk
который создает Ogre::ManualObject
, Потому что создание ManualObject
занимает немного времени, я ставлю задачу в новый поток.
К сожалению, после создания потока ManualObject
Теперь я получаю следующее OgreException:
«Невозможно создать буфер вершин GL в GLHardwareVertexBuffer :: GLHardwareVertexBuffer»
Я посмотрел в код, и он терпит неудачу на данном этапе:
glGenBuffersARB( 1, &mBufferId );
if (!mBufferId)
{
OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR,
"Cannot create GL vertex buffer",
"GLHardwareVertexBuffer::
}
Это говорит о том, что glGenBuffersARB () неправильно заполняет mBufferId.
Я не могу понять, что вызывает это, какие-либо предложения?
Потому что создание ManualObject занимает немного времени Я поставил задачу на новый поток.
Это твоя проблема прямо здесь. Контекст OpenGL может быть активным только в одном потоке за раз. Если вы вызываете команды OpenGL из потока, который не связан с контекстом OpenGL, все, что вы получите, — это ошибки.
Других решений пока нет …