debian下的OpenGL编译 - glGetUniformLocation未声明

时间:2013-05-06 13:18:43

标签: linux opengl compilation debian flags

我找不到在Linux下编译以下测试代码的方法(为Mac开发的程序的一部分)

#include<GL/glui.h>
void test(){
   const char *name
   GLint   uni_loc,x,y ;
   GLuint  id;
   glVertex2i( x, y);
   uni_loc = ::glGetUniformLocation(id, name) ;
}

我尝试用以下方法编译它:

g++ -c test.cpp -lglut -lGL -lGLU

g++ -c -lglut -lGL -lGLU test.cpp

我收到glGetUniformLocation函数的链接器错误:

 '::glGetUniformLocation' has not been declared

但不知道如何解决它。我不了解openGl,并且在不同的实现之间完全丢失了。我在

中找到了函数的定义
  /usr/include/GL/gl_mangle.h
  /usr/include/GL/glew.h
  /usr/include/GL/glext.h

可能是我有错误的GL版本吗?

我安装了以下软件包:

  freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev mesa-common-dev

和gcc版本4.7.2(Debian 4.7.2-5)。

1 个答案:

答案 0 :(得分:2)

获取扩展中定义的函数的可移植方法是使用GLEW之类的扩展包装器。一种不太健壮的方法是在包含“GL / gl.h”和“GL / glext.h”之前定义GL_GLEXT_PROTOTYPES。