2015-05-08 3 views
4

Я пытаюсь создать контекст OpenGL с osmesa (вне экрана mesa). Я хочу использовать программную реализацию mesa без окна и сохранять выводимый вывод в файл png.OpenGL ES 2.0 с osmesa

http://www.mesa3d.org/osmesa.html

создать контекст GL со следующим:

OSMesaContext context = OSMesaCreateContext(GL_RGBA, NULL); 
OSMesaMakeCurrent(context, buffer, GL_UNSIGNED_BYTE, width, height); 

Однако, когда я взываю glGetString(GL_VERSION) о версии 2.1 Mesa 10.1.1. Как и ожидалось, ни один из моих шейдеров GLSL ES не компилируется. При использовании SDL я могу предоставить подсказку версии и создать контекст GLES 2.0.

Как указать версию контекста GL, создаваемого osmesa?

ответ

2

Если вы посмотрите на src/mesa/drivers/osmesa/osmesa.c, то по строке 745 вы увидите, что он явно запрашивает профиль совместимости OpenGL, который Mesa ограничивает OpenGL 2.1 и GLSL 130 (см. Src/mesa/main/version.c Заменив API_OPENGL_COMPAT результатами API_OPENGL_CORE с версией OpenGL, равной 0.0 в Mesa 10.6.2, к сожалению, простое исправление не работает. Но установка переменной среды MESA_GL_VERSION_OVERRIDE на «3.3» работайте. Не тестировали, не видя, что возвращает glGetString (GL_VERSION). Удачи!

+0

Он работает с 'MESA_GL_VERSION_OVERRIDE = 999.999' Я сомневаюсь, что версия OpenGL' 999.999' –

 Смежные вопросы

  • Нет связанных вопросов^_^