Ubuntu环境下开发OpenGL

分享实验UbuntuOpenGL by 达达 at 2011-11-15

几年前买了一本《计算机图形学》一直放在书架上没翻过,昨天同事也买了一本我才想起来有这么一本书。。。买了不能浪费呀,今天翻开来在Ubuntu里面动手试了下书上的第一个OpenGL程序,中间遇到些问题但都通过万能的谷歌找到了解决办法,这里整理记录一下。

首先我按书上给的代码完全没有理解的情况下照打了一遍,下面就是实验代码:

#include <GL/glut.h>

void lineSegment(void) {
        glClear(GL_COLOR_BUFFER_BIT);

        glColor3f(1.0, 0.0, 0.0);
        glBegin(GL_LINES);
                glVertex2i(180, 15);
                glVertex2i(10, 145);
        glEnd();

        glFlush();
}

int main(int argc, char **argv) {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
        glutInitWindowPosition(50, 100);
        glutInitWindowSize(400, 300);
        glutCreateWindow("Hello OpenGL");
        glClearColor(1.0, 1.0, 1.0, 0.0);
        glMatrixMode(GL_PROJECTION);
        gluOrtho2D(0.0, 200.0, 0.0, 150.0);
        glutDisplayFunc(lineSegment);
        glutMainLoop();
        return 0;
}

然后我试了下编译这个代码,但是会提示找不到 GL/glut.h 文件,显然是因为没有安装OpenGL相关的库,上网搜了一下,Ubuntu安装OpenGL库用以下命令:

sudo apt-get install freeglut3-dev

安装好以后再编译,错误信息变了,提示找不到一些函数,很显然是因为连接器链接相应的库文件,自己尝试了-lopengl和-lgl,都不行,再次求助谷歌,得到一下结果:

cc main.c -lglut -lGL -lGLU

后面的-lGL对编译上面的程序来说是不需要的,而-lGLU其实是我第二次搜索得到的答案,如果没有指定-lGLU或者写成了-lglu都会导致上面代码中的gluOrtho2D函数找不到。