2015-05-08 256 views
4

我正在尝试用osmesa(离屏台面)创建OpenGL上下文。我希望使用不带窗口的mesa的软件实现,并将渲染输出保存为png文件。osmesa OpenGL ES 2.0

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上下文。

如何指定由osmesa创建的GL上下文的版本?

回答

2

如果你看一下src/mesa/drivers/osmesa/osmesa.c,在第745行左右,你可以看到它明确要求OpenGL兼容性配置文件,Mesa限制OpenGL 2.1和GLSL 130(参见src/mesa/main/version.c line。在Mesa 10.6.2中用API_OPENGL_CORE结果替换为OpenGL版本为0.0的API_OPENGL_COMPAT,不幸的是,这个简单的修复不起作用,但是,将MESA_GL_VERSION_OVERRIDE环境变量设置为“3.3”没有测试,看到什么glGetString(GL_VERSION)返回。祝你好运!

+0

它适用于'MESA_GL_VERSION_OVERRIDE = 999.999'我怀疑我的OpenGL版本是'999.999' –