OpenGL ES 2.0与osmesa

6

我正在尝试使用osmesa(离屏幕esa)创建一个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上下文的版本?

1个回答

3

如果您查看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会导致在Mesa 10.6.2中OpenGL版本为0.0,因此不幸的是,简单的修复方法不起作用。但是,将MESA_GL_VERSION_OVERRIDE环境变量设置为“3.3”似乎有效。除了查看glGetString(GL_VERSION)返回的内容外,我还没有进行过测试。祝你好运!


它可以使用MESA_GL_VERSION_OVERRIDE=999.999运行,但我怀疑我的OpenGL版本是999.999 - Szabolcs Dombi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接