在glGenerateMipmap(GL_TEXTURE_2D)上误解了编译器错误;

时间:2013-05-18 20:43:36

标签: opengl

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

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

我对该功能的使用是:

  if (mipmapped) {
    glGenerateMipmap(GL_TEXTURE_2D);
  }

为什么我的编译器会阻塞这个函数?在这种情况下,这个错误意味着什么?

1 个答案:

答案 0 :(得分:5)

glext.h标题默认声明这些函数,你必须

#define GL_GLEXT_PROTOTYPES

在包含该文件之前,如果你真的想要。但是应该警告您只是声明该功能并不意味着您可以在任何平台上成功链接,因为GL lib不需要导出该功能。在Linux上,它可能会起作用,但最接近标准的是OpenGL Application Binary Interface for Linux,它只保证导出所有OpenGL 1.2核心功能。

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