带有osmesa的OpenGL ES 2.0

我试图用osmesa(屏幕外的mesa)创建一个OpenGL上下文.我希望在没有窗口的情况下使用mesa的软件实现,并将渲染的输出保存到png文件中.

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上下文的版本?

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

点赞