0

我正在尝试使我编写的库可移植。它是一个图形库,大量使用了高级 OpenGL。我在支持 OpenGL 4.2 的机器上开发了这个库。

有许多 OpenGL 4 函数(一个简单的例子是 glGenerateMipmap)不是 OpenGL 2 中的核心功能,但在扩展(在本例中为 glGenerateMipmapEXT)下可用。在旧硬件上运行时,我发现 OpenGL 4 函数指针为 NULL,但以 EXT 为后缀的 OpenGL 2 扩展函数不是,并且工作得很好。

我正在使用 GLEW。虽然我意识到有时 OpenGL 4 函数与 OpenGL 2 EXT 函数不同,但它们通常是相同的。有没有办法让 GLEW 将 EXT 函数加载为 OpenGL 4 函数?或者我是否坚持将所有 OpenGL 4 函数重命名为它们的 EXT 对应函数?还有什么?

4

1 回答 1

3

不,您不能让 GLEW 对您撒谎并假装扩展功能是核心功能。

通常,在编写 OpenGL 代码时,您选择特定版本 + 扩展集并写入。如果您需要可选功能(特定于硬件的功能),那么您需要编写额外的代码路径来调用这些 API。

除了 MacOSX 的核心 3.2 支持之外,您可以期望旧的扩展在新硬件上无限期地得到支持。这样,旧程序仍然可以在较新的实现上运行。因此,您不会找到不实现 GL_EXT_framebuffer_object 的 GL 4.x 实现。

于 2012-07-03T02:00:30.050 回答