是否已弃用/删除OpenGL函数仍可访问?

时间:2017-10-09 13:12:21

标签: ubuntu opengl ubuntu-14.04 glu

我运行Ubuntu 14.04,当我要求我的系统运行OpenGL时,我得到了这个:

:~$ glxinfo | grep "version"
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.2.0
OpenGL core profile shading language version string: 3.30
OpenGL version string: 3.0 Mesa 11.2.0
OpenGL shading language version string: 1.30

那么OpenGL核心配置文件版本是3.3而OpenGL版本是3.0?!?这是否意味着我正在运行OpenGL 3.3或3.0?

目前正在使用GLU ,它已被弃用(编译并运行正常)。使用上面检查的OpenGL版本,这是正常的,我使用GLU没有明显的问题

1 个答案:

答案 0 :(得分:1)

Wiki OpenGL Context为您提供有关上下文类型的信息。
你看到有功能"已弃用" (即不推荐,但可用)和"删除" (即不可用)。

简而言之:有三种类型的上下文:

  • 旧的固定管道。版本< = 2.1
  • 核心。版本> = 3.2,包含VAO,VBO和着色器。删除所有旧功能。
  • 核心与"兼容性"旗。你有其他两种类型。

有第四种类型:"向前兼容性"。这意味着尽管您选择了哪个版本,但所有已弃用和已删除的功能都不可用。

当您要求旧的上下文时,API实现可以免费为您提供任何可用的版本。你可能会得到4.5。但它将具有兼容性标志,因此您可以获得所要求的旧上下文。或者可能得到2.1,或3.0或......

您可以使用GLX向Linux询问您喜欢的上下文类型。但如果您使用Window toolkit

,情况要容易得多

Mesa将尝试使用自己的DRI驱动程序(Gallium,RadeonFeature等)或支持者为您提供硬件加速。如果需要,可以强制使用软件渲染而不是硬件加速。