以OpenGL 2.0为目标

targeting OpenGL 2.0

本文关键字:目标 OpenGL      更新时间:2023-10-16

我正在手动查询函数指针,并想知道我是否将 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,则永远不应使用等效扩展。

例如:

有一个名为TexImage3D的函数,当支持EXT_texture3D时可用。

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

如果驱动程序正在实现 OpenGL 2.0,我是否必须使用扩展?

除非您要对 OpenGL 2.0 未提供的功能使用扩展,否则不会。