我正在手动查询函数指针,想知道我是否将 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/