尝试编译已弃用的 OpenGL 函数时,如何使编译器标记错误?

时间:2021-03-21 21:54:13

标签: opengl deprecated legacy

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

我想使用很多旧代码,但是当编译器尝试编译一些遗留代码(例如 glBegin() ... glEnd())时,我真的可以用它来标记错误。

我之前在 Mac 上编译过,在尝试编译时它标记了这个错误,但现在我使用的是运行 raspbian 的 raspberry pi。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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