0

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)。

4

1 に答える 1

2

拡張で定義された関数を取得する移植可能な方法は、 GLEWのような拡張ラッパーを使用することです。堅牢性の低い方法は、"GL/gl.h" と "GL/glext.h" をインクルードする前に GL_GLEXT_PROTOTYPES を定義することです。

于 2013-05-06T13:44:25.773 に答える