1

错误:“glGenerateMipmap”没有依赖于模板参数的参数,因此“glGenerateMipmap”的声明必须可用[-fpermissive]

我包含了#include <GL/glext.h>,并且可以在标题中看到函数的声明,但是我得到了上面的编译器错误。我在 Ubuntu 13.04 上安装了最新的 nvidia 驱动程序。我会假设这个函数会被定义。

我对该功能的使用是:

  if (mipmapped) {
    glGenerateMipmap(GL_TEXTURE_2D);
  }

为什么我的编译器在这个函数上卡住了?在这种情况下,该错误意味着什么?

4

1 回答 1

5

glext.h默认情况下,标头不会声明这些函数,您必须

#define GL_GLEXT_PROTOTYPES

如果您真的想要,在包含该文件之前。但是应该警告您,仅声明该函数并不意味着您可以在任何平台上成功链接,因为导出该函数不需要 GL 库。不过,在 Linux 上,它可能会起作用,但最接近标准的是Linux 的 OpenGL 应用程序二进制接口,它只保证导出所有 OpenGL 1.2 核心函数。

您应该考虑使用 OpenGL 扩展机制,通过手动glXGetProcAddress[ARB]()或使用方便的库(如GLEWGL3W )

于 2013-05-19T01:03:52.347 回答