【问题标题】:How can I make my compiler flag an error when trying to compile deprecated OpenGL functions?尝试编译已弃用的 OpenGL 函数时,如何使编译器标记错误?
【发布时间】:2021-03-21 21:54:13
【问题描述】:

大约一年前我学会了使用旧版 OpenGL (v1 / 2),但现在我正在尝试制作一些更新的东西(即 >OpenGL 3.3)。

我想使用很多旧代码,但是我真的可以让编译器在尝试编译旧代码(例如 glBegin() ... glEnd())时标记错误。

前段时间我在 Mac 上编译,在尝试编译时它标记了这个错误,但现在我使用的是运行 raspbian 的树莓派。

提前感谢您的帮助!

【问题讨论】:

    标签: opengl deprecated legacy


    【解决方案1】:

    根据您的用例,您也许可以使用 OpenGL ES 标头而不是标准的 OpenGL 标头。 OpenGL ES 标头不包含已弃用的函数。

    另一种可能性是使用像 gl3w 这样的加载器,这也将使您的代码更具可移植性。

    【讨论】:

      【解决方案2】:

      我建议使用 OpenGL 加载器生成器 glad 为您要定位的 OpenGL 版本的核心配置文件生成加载器。生成的标头将不包含任何已弃用的兼容性配置文件函数和 GLenum 定义。

      但是,请注意,这不会在编译时捕获所有已弃用的 GL 用法。例如,核心配置文件要求在渲染时绑定 VAO != 0,顶点数组来自 VBO 而不是客户端内存,并且使用着色器程序 != 0。在编译时无法真正检测到此类问题。我建议使用OpenGL Debug Output 功能在运行时捕获那些剩余的问题。大多数 GL 实现都会以这种方式产生非常有用的错误或警告消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 2021-12-23
        • 2015-05-20
        相关资源
        最近更新 更多