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 回答