При каких обстоятельствах glGenBuffers / glGenBuffersARB потерпит неудачу?

Я использую движок 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.

Я не могу понять, что вызывает это, какие-либо предложения?

2

Решение

Потому что создание ManualObject занимает немного времени Я поставил задачу на новый поток.

Это твоя проблема прямо здесь. Контекст OpenGL может быть активным только в одном потоке за раз. Если вы вызываете команды OpenGL из потока, который не связан с контекстом OpenGL, все, что вы получите, — это ошибки.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]