我正在尝试使用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上下文的版本?
答案 0 :(得分:2)
如果你看一下第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”似乎可行没有测试过glcoetString(GL_VERSION)返回的内容。祝你好运!