【发布时间】:2021-12-01 13:20:02
【问题描述】:
我在 Ubuntu 18.04 上工作。我没有定义GL_GLEXT_PROTOTYPES。我使用glXGetProcAddress 加载“核心”OpenGL 函数。我的申请链接到/usr/lib/x86_64-linux-gnu/libGL.so。一些遗留的 OpenGL 函数无需定义GL_GLEXT_PROTOTYPES 或调用glXGetProcAddress 即可使用,例如glColor3f。 Linux下默认支持哪个OpenGL版本(功能)?
编辑
我假设硬件支持最新的 OpenGL 版本。此外,我使用来自标准 Ubuntu 位置的兼容性配置文件和 OpenGL 头文件 (gl.h, glext.h):/usr/include/GL。看起来那些头文件已经被mesa-common-dev apt 包安装了。
【问题讨论】:
-
无论您要求什么(只要您的 GPU 驱动程序支持)。
-
@BDL 我假设硬件支持最新的 OpenGL 版本。创建 OpenGL 上下文,例如 4.6 不会自动提供适当的函数指针。我已经询问了哪些 OpenGL 函数可用,而无需使用 glxGetProcAddress(或任何其他第三方加载器)定义 GL_GLEXT_PROTOTYPES。
-
所以您只是对可用的函数定义感兴趣?我问这个是因为,例如,当您请求 4.6 核心上下文时,
glColor3f将可用,但调用它会给您一个错误,因为它在核心配置文件中已被弃用。还请添加您从哪里获得gl.h头文件(可能是mesa?或者可能是libgl 或glproto?)。 -
你说得对,我应该提供更多信息。是的,我对默认情况下可用的函数定义感兴趣。我使用来自标准 Ubuntu 位置的兼容性配置文件和 OpenGL 头文件 (
gl.h, glext.h):/usr/include/GL。看起来这些标头已由mesa-common-devapt 包安装。我的应用程序仅显式链接到/usr/lib/x86_64-linux-gnu/libGL.so,但 ldd 显示它也链接到 nvidia 专有驱动程序。