0

我需要 glGenerateMipmap* 函数,但我想知道:glGenerateMipmap和之间是否有任何区别glGenerateMipmapEXT

我知道 EXT 在 ARB 之前,所以 EXT 版本应该可以在旧硬件上运行?行为上有什么不同吗?

另一个问题:

我可以用吗:

myGLGenerateMipmap = loadProcAddress("glGenerateMipmap")

或者我应该检查GL_EXT_framebuffer_object第一个支持?

请注意,我不想使用 GLEW/GLEE 或任何其他库...

4

1 回答 1

3

在 OpenGL 3.0 之前,此函数不是 OpenGL 规范的一部分。恰当的。OpenGL 3.0 中包含的版本实际上源自GL_ARB_framebuffer_object规范。


如果您的驱动程序列出了GL_ARB_framebuffer_object扩展,或者您知道您有一个合法的 OpenGL 3.0+ 实现,那么您可以保证通过 proc 拥有此功能。地址glGenerateMipmap。在这种情况下,这是您应该使用的程序。

glGenerateMipmapEXT来自糟糕的 EXT 版本的 FBO 规范。我会像瘟疫一样避免它,除非你既没有 OpenGL 3.0 也没有GL_ARB_framebuffer_object. 但是,如果您的驱动程序不报告,您也不会执行此程序GL_EXT_framebuffer_object


这是扩展管理员让生活更轻松的地方......但我可以看到不想向您的软件添加另一个依赖项。您将不得不学习阅读扩展规范的艺术并遵循OpenGL® Registry上的版本更改历史

于 2013-08-15T19:12:50.517 回答