codeblocks配置OPENGL GLUT
作者 |
He YiJun – storysnail<at>gmail.com |
||||
团队 |
ls |
||||
版权 |
转载请保留本声明! 本文档包含的原创代码根据General GPLv3 本文档根据GNU GFDL1.3许可证的副本可以在这里获得:http://www.gnu.org/licenses/gfdl.html 文中所引用的软件版权详见各软件版权具体声明,文中所提及的所有商标均为各自商标所有人的财产。 |
||||
更新 |
|
前言:
一份在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压缩包,复制解压后的文件到对应位置.
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
五 示例源代码
1 //windows头文件 2 3 #include<windows.h> 4 5 #include<GL/gl.h> 6 7 #include<GL/glu.h> 8 9 #include<gl/glut.h> 10 11 12 13 /*linux头文件 14 15 #include <X11/Xlib.h> 16 17 #include<GL/gl.h> 18 19 #include<GL/glu.h> 20 21 #include<GL/glut.h> 22 23 #include<GL/glx.h> 24 25 */ 26 27 staticGLfloatspin=0.0; 28 29 30 31 voidinit(void) 32 33 { 34 35 glClearColor(0.0,0.0,0.0,0.0); 36 37 glShadeModel(GL_FLAT); 38 39 } 40 41 42 43 voiddisplay(void) 44 45 { 46 47 glClear(GL_COLOR_BUFFER_BIT); 48 49 glPushMatrix(); 50 51 glRotatef(spin,0.0,0.0,1.0); 52 53 glColor3f(1.0,1.0,1.0); 54 55 glRectf(-25.0,-25.0,25.0,25.0); 56 57 glPopMatrix(); 58 59 glutSwapBuffers(); 60 61 } 62 63 64 65 voidspinDisplay(void) 66 67 { 68 69 spin=spin+2.0; 70 71 if(spin>360.0) 72 73 spin=spin-360.0; 74 75 glutPostRedisplay(); 76 77 } 78 79 80 81 voidreshape(intw,inth) 82 83 { 84 85 glViewport(0,0,(GLsizei)w,(GLsizei)h); 86 87 glMatrixMode(GL_PROJECTION); 88 89 glLoadIdentity(); 90 91 glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0); 92 93 glMatrixMode(GL_MODELVIEW); 94 95 glLoadIdentity(); 96 97 } 98 99 100 101 voidmouse(intbutton,intstate,intx,inty) 102 103 { 104 105 switch(button){ 106 107 caseGLUT_LEFT_BUTTON: 108 109 if(state==GLUT_DOWN) 110 111 glutIdleFunc(spinDisplay); 112 113 break; 114 115 caseGLUT_MIDDLE_BUTTON: 116 117 if(state==GLUT_DOWN) 118 119 glutIdleFunc(NULL); 120 121 break; 122 123 default: 124 125 break; 126 127 } 128 129 } 130 131 132 133 intmain(intargc,char**argv) 134 135 { 136 137 glutInit(&argc,argv); 138 139 glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); 140 141 glutInitWindowSize(250,250); 142 143 glutInitWindowPosition(100,100); 144 145 glutCreateWindow(argv[0]); 146 147 init(); 148 149 glutDisplayFunc(display); 150 151 glutReshapeFunc(reshape); 152 153 glutMouseFunc(mouse); 154 155 glutMainLoop(); 156 157 return0; 158 159 }
五
编译运行
这个示例也可以在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
编译
运行