将 OpenGL 兼容性配置文件与 Intel HD GPU + Mesa 结合使用
Using OpenGL Compatibility Profile with Intel HD GPU + Mesa
我得到了一个由另一个团队编写的 OpenGL 应用程序,我一直在努力让它工作将近一个星期。我的设置具有 3.3 的核心配置文件(GLSL 3.3、Mesa 11.2)和 3.0 的兼容性配置文件(GLSL 1.3、Mesa 11.2)。我在我的设置中使用核心配置文件尝试了 运行 一些测试应用程序并成功了。但是,我知道一个事实,即此应用程序使用 3.0 兼容性配置文件(在 glext.h 中使用 ARB 函数),但只要执行 glUseProgramObjectARB、glActiveTextureARB、glUniform1iARB 等函数,它就会不断抛出 INVALID_OPERATION 错误 (1282) .
非常感谢您提供解决此问题的任何帮助。
and compatibility profile of 3.0 (GLSL 1.3, Mesa 11.2)
当然不是。对兼容性配置文件的支持是可选的。到目前为止,只有 NVidia 和 AMD 的专有驱动程序完全支持它们。所有其他 OpenGL 实现都没有。
However, I know for a fact that this application uses the 3.0 compatibility profile (uses ARB functions in the glext.h)
这些可能是不是兼容性配置文件功能。更有可能的是,这些是与 OpenGL-2.1 上下文一起使用的。事实上,在引入核心配置文件之前,OpenGL-3 的大部分行为或多或少类似于 2.1 + 一些扩展(尽管 glUseProgramObjectARB
的使用不符合该模式)。
我的建议:尽量摆脱那些针对兼容性配置文件的程序;从长远来看,这只是太多的技术债务 运行。如果您绝对必须支持早期版本(即 2.1,现在几乎到处都支持),请使用不同的代码路径覆盖它。
我得到了一个由另一个团队编写的 OpenGL 应用程序,我一直在努力让它工作将近一个星期。我的设置具有 3.3 的核心配置文件(GLSL 3.3、Mesa 11.2)和 3.0 的兼容性配置文件(GLSL 1.3、Mesa 11.2)。我在我的设置中使用核心配置文件尝试了 运行 一些测试应用程序并成功了。但是,我知道一个事实,即此应用程序使用 3.0 兼容性配置文件(在 glext.h 中使用 ARB 函数),但只要执行 glUseProgramObjectARB、glActiveTextureARB、glUniform1iARB 等函数,它就会不断抛出 INVALID_OPERATION 错误 (1282) .
非常感谢您提供解决此问题的任何帮助。
and compatibility profile of 3.0 (GLSL 1.3, Mesa 11.2)
当然不是。对兼容性配置文件的支持是可选的。到目前为止,只有 NVidia 和 AMD 的专有驱动程序完全支持它们。所有其他 OpenGL 实现都没有。
However, I know for a fact that this application uses the 3.0 compatibility profile (uses ARB functions in the glext.h)
这些可能是不是兼容性配置文件功能。更有可能的是,这些是与 OpenGL-2.1 上下文一起使用的。事实上,在引入核心配置文件之前,OpenGL-3 的大部分行为或多或少类似于 2.1 + 一些扩展(尽管 glUseProgramObjectARB
的使用不符合该模式)。
我的建议:尽量摆脱那些针对兼容性配置文件的程序;从长远来看,这只是太多的技术债务 运行。如果您绝对必须支持早期版本(即 2.1,现在几乎到处都支持),请使用不同的代码路径覆盖它。