c++ - 面向 OpenGL 2.0

标签 c++ opengl

我正在手动查询函数指针,想知道我是否将 OpenGL 2.0 作为最低要求,我什么时候应该使用函数的扩展变体?

让我举个例子来问你。这是 gl.spec 文件: https://www.opengl.org/registry/oldspecs//gl.spec

我认为 <= 2.0 的函数在面向 2.0 时也可用,所以让我们检查“OpenGL 1.2 命令”部分。有一个名为 TexImage3D 的函数,当支持 EXT_texture3D 时可用。

另一个例子是(“OpenGL 2.0 命令”部分)DrawBuffers 函数。是否只有实现了ARB_draw_buffers才可用?

当定位 <= 2.0 时,应该使用扩展程序,不是吗?如果驱动程序正在实现 OpenGL 2.0,我是否必须使用扩展?

最佳答案

如果您的目标是特定版本的 OpenGL,那么您应该永远使用等效的扩展。

例如:

There is a function called TexImage3D which is available when the EXT_texture3D is supported.

不,事实并非如此。 glTexImage3D 在 OpenGL 1.2 中可用。 glTexImage3DEXT 由 EXT_texture_3d 提供。它们不是同一个函数,并且不能保证调用 glTexImage3DEXT 与调用 glTexImage3D 完全相同。

If a driver is implementing OpenGL 2.0, do I have to use extensions at all?

除非您想使用 OpenGL 2.0 未提供的功能扩展。

关于c++ - 面向 OpenGL 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462974/

相关文章:

c++ - 从模块导出全局常量的正确方法是什么?

c++ - 具有参数化构造函数的二维 vector

c++ - unordered_map<K, V>::iterator 从何而来?

objective-c - glDrawArrays 未正确绘制

c++ - OpenGL 快速读取回缓冲区

c++ - OpenGL boolean 统一?

c++ - 如何确定key的 "(default)"值

c++ - 来自基类的函数指针

c++ - 如何获取可靠的 QGLWidget 快照

javascript - 使用 Emscripten 将 C++ ImpulseEngine 编译成 JavaScript