2013-05-06 59 views
0

我不能找到一种方法,在Linux下编译下面的测试代码(适用于Mac开发计划的一部分)OpenGL的编译 - glGetUniformLocation没有宣布

#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 

但d不知道如何解决它。我没有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)。

回答

2

获取扩展中定义的函数的便携方式是使用像GLEW这样的扩展包装。不太可靠的方法是在包含“GL/gl.h”和“GL/glext.h”之前定义GL_GLEXT_PROTOTYPES。