1.首先安装Glut,我选择的是下载的是FreeGlut,具体安装命令过程:
http://freeglut.sourceforge.net/docs/install.php
//安装过程中,出现 “ error: X11/extensions/XInput.h: No such file or directory ”,解决:$sudo apt-get install libxi-dev
//安装完毕后,我的电脑在/usr/local里面的/include和/lib文件夹下建立一些引用库和头文件等
2.配置Codeblocks:
打开codeblocks,选中glut项目,选择新建,输入项目名称,会提示要求指定glut的安装路径,直接指定到/usr/ (我指定到的是/usr/local/)就可以。如果上面的两个文件都在,应该很顺利就可以建 立起项目了。
最后,还有一点,就是编译的时候会出现一个关于Xxf86vm的错误。右键点击项目打开项目属性窗口,看到”project settings“选项卡。点击“project's build
options”,然后点击“Linker settings”选项卡,删除对于Xxf86vm的引用就可以正确编译了。
3.另外的简单方法:(直接使用vim即可)
1). Install build-essential sudo apt-get install build-essential //安装autotool,否则无法./autoconf
2). Install opengl sudo apt-get install freeglut3-dev //直接配置安装freeglut
3). 编译时使用命令::gcc simple.c -lglut -o simple
其中simple.c可以使用:
/* * GLUT Shapes Demo * * Written by Nigel Stewart November 2003 * * This program is test harness for the sphere, cone * and torus shapes in GLUT. * * Spinning wireframe and smooth shaded shapes are * displayed until the ESC or q key is pressed. The * number of geometry stacks and slices can be adjusted * using the + and - keys. */ #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut.h> #endif #include <stdlib.h> static int slices = 16; static int stacks = 16; /* GLUT callback Handlers */ static void resize(int width, int height) { const float ar = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity() ; } static void display(void) { const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0; const double a = t*90.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3d(1,0,0); glPushMatrix(); glTranslated(-2.4,1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutSolidSphere(1,slices,stacks); glPopMatrix(); glPushMatrix(); glTranslated(0,1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutSolidCone(1,1,slices,stacks); glPopMatrix(); glPushMatrix(); glTranslated(2.4,1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutSolidTorus(0.2,0.8,slices,stacks); glPopMatrix(); glPushMatrix(); glTranslated(-2.4,-1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutWireSphere(1,slices,stacks); glPopMatrix(); glPushMatrix(); glTranslated(0,-1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutWireCone(1,1,slices,stacks); glPopMatrix(); glPushMatrix(); glTranslated(2.4,-1.2,-6); glRotated(60,1,0,0); glRotated(a,0,0,1); glutWireTorus(0.2,0.8,slices,stacks); glPopMatrix(); glutSwapBuffers(); } static void key(unsigned char key, int x, int y) { switch (key) { case 27 : case 'q': exit(0); break; case '+': slices++; stacks++; break; case '-': if (slices>3 && stacks>3) { slices--; stacks--; } break; } glutPostRedisplay(); } static void idle(void) { glutPostRedisplay(); } const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f }; const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f }; const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat high_shininess[] = { 100.0f }; /* Program entry point */ int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitWindowPosition(10,10); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("GLUT Shapes"); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); glutIdleFunc(idle); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glutMainLoop(); return EXIT_SUCCESS; }
完毕。