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

Mat*_*gan 1 opengl

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

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

我对这个功能的使用是:

  if (mipmapped) {
    glGenerateMipmap(GL_TEXTURE_2D);
  }
Run Code Online (Sandbox Code Playgroud)

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

der*_*ass 5

glext.h头中默认情况下声明这些功能,你必须

#define GL_GLEXT_PROTOTYPES
Run Code Online (Sandbox Code Playgroud)

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

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