我正在尝试用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时,我可以提供一个版本提示,并创建一个GLEs2.0上下文。
如何指定由osmesa创建的GL上下文的版本?
发布于 2015-07-23 21:01:56
如果您查看第745行周围的src/ Mesa /drivers/osmesa/osmesa.c,可以看到它明确要求OpenGL兼容性配置文件,mesa将其限制为OpenGL 2.1和GLSL 130 (参见src/mesa/main/version.c行)。在Mesa10.6.2中,将API_OPENGL_COMPAT替换为API_OPENGL_CORE结果的OpenGL版本为0.0,因此不幸的是,简单的修复无法工作。但是,将MESA_GL_VERSION_OVERRIDE环境变量设置为"3.3“似乎有效。除了看到glGetString(GL_VERSION)返回的内容之外,还没有进行测试。祝好运!
https://stackoverflow.com/questions/30134112
复制相似问题