原文地址:
http://my.oschina.net/storysnail/blog/117374
一份在codeblocks下配置OPENGL GLUT的簡單教程。
一:下載安裝codeblock10.05
到http://www.codeblocks.org下載codeblock,建議下載帶MinGW編譯器版本(GCC compiler and GDB debugger),
這樣基本不需要什麼特殊配置。之後運行安裝文件,一步步安裝到結束。
這裏特別說明一下,我的計算機運行着windows 7 64位系統。
二:下載編譯好的GLUT庫。
可以到OPENGL的老巢自己尋找需要的GLUT(http://www.opengl.org/),有很多的不同版本!
我使用的是GLUT-3.7.6,可以到下面的頁面下載。
http://user.xmission.com/~nate/glut.html
三:安裝glut
解壓glut-3.7.6-bin.zip壓縮包,複製解壓後的文件到對應位置. (位置每個人都不一樣,前兩個就是複製到CodeBlock的安裝目錄中的一些文件,我的就是在D盤)
glut.h C:\Program Files (x86)\CodeBlocks\MinGW\include\GL
glut32.lib C:\Program Files (x86)\CodeBlocks\MinGW\lib
glut32.dll C:\Windows\system
四:創建Glut項目
創建Glut項目
指定GLUT的位置,我的是C:\Program Files (x86)\CodeBlocks\MinGW
五:示例源代碼:
//windows頭文件 #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <gl/glut.h> /* linux頭文件 #include <X11/Xlib.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> #include <GL/glx.h> */ static GLfloat spin = 0.0; void init(void) { glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FLAT); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(spin,0.0,0.0,1.0); glColor3f(1.0,1.0,1.0); glRectf(-25.0,-25.0,25.0,25.0); glPopMatrix(); glutSwapBuffers(); } void spinDisplay(void) { spin = spin + 2.0; if(spin > 360.0) spin = spin - 360.0; glutPostRedisplay(); } void reshape(int w, int h) { glViewport(0,0,(GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void mouse(int button,int state,int x, int y) { switch(button) { case GLUT_LEFT_BUTTON: if(state == GLUT_DOWN) glutIdleFunc(spinDisplay); break; case GLUT_MIDDLE_BUTTON: if(state == GLUT_DOWN) glutIdleFunc(NULL); break; default: break; } } int main(int argc,char ** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(250,250); glutInitWindowPosition(100,100); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutMainLoop(); return 0; }
六:編譯運行
這個示例也可以在Linux下編譯運行,效果和windows下一樣,注意需要修改一下頭文件,見上面源碼。
下面是makefile,在不同版本的linux下,makefile文件內容可能需要調整!
all:double CC=gcc double:double.c $(CC) -Wall -g -I/usr/include/GL double.c -o double -L/usr/lib -L/usr/X11R6/lib -lGL -lGLU -lX11 -lglut #-lglut -lGLU -lGL -lXmu -lX11
編譯
運行