2013-05-06 60 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。