我找不到在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)。
答案 0 :(得分:2)
获取扩展中定义的函数的可移植方法是使用GLEW之类的扩展包装器。一种不太健壮的方法是在包含“GL / gl.h”和“GL / glext.h”之前定义GL_GLEXT_PROTOTYPES。