Linux系统下默认可使用的OpenGL版本及对应函数范围是多少?
Linux Mesa默认环境下可直接使用的OpenGL版本及函数范围
基于你使用Ubuntu官方mesa-common-dev包提供的头文件、链接系统libGL.so、开启兼容模式的前提,默认无需额外配置即可直接使用的OpenGL相关规则如下:
1. 默认支持的最高OpenGL版本
无需定义GL_GLEXT_PROTOTYPES、无需手动加载函数的前提下,可直接使用的是OpenGL 1.1及更低版本的所有兼容模式特性。
2. 对应可直接调用的函数范围
- 包含全部OpenGL 1.0、OpenGL 1.1规定的兼容模式核心函数,你用到的
glColor3f属于OpenGL 1.0的固定管线函数,正好在此范围内 - 不包含OpenGL 1.2及更高版本的核心函数,也不包含任何ARB、EXT、OES等官方扩展的函数
- 即使硬件支持最新OpenGL版本,高版本函数的原型默认也不会在头文件中暴露,要么提前定义
GL_GLEXT_PROTOTYPES宏再包含GL头文件,要么通过glXGetProcAddress手动动态加载函数地址才能调用
补充说明
你当前能正常调用低版本函数的原因:
- 兼容模式上下文下,
libGL.so会导出所有兼容版本的函数符号,OpenGL 1.1及更低版本的函数原型默认在gl.h中直接声明,因此无需额外操作即可正常编译、链接、运行 - 若切换为核心模式上下文,OpenGL 1.1中已被废弃的固定管线类函数即使头文件有声明,运行时也会调用失败,核心模式上下文不会导出废弃特性的相关实现
内容的提问来源于stack exchange,提问作者Irbis
相关产品推荐
相关产品推荐

