一 . VC6.0 OpenG力开发环境配置
- 下载glut压缩包。该包内含有glut.dll、glut.h、glut.lib、glut32.dll、glut32.lib五个文件。
-
复制glut.dll和glut32.dll到系统盘->windows/system32文件夹下(64位系统,则复制到SysWOW64文件夹下),复制glut.lib和glut32.lib到VC安装目录的vc98/lib文件夹下,复制glut.h到vc98/include/GL文件夹下(如果没有,可以自己新建一个)。
-
创建VC工程:选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里。
- 链接OpenGL libraries。该方法有两种方法:
a. 在Visual C++中先单击Project,再单击Settings,再找到Link单击,最后在Object/library modules 的最前面加上opengl32.lib glut32.lib glaux.lib glu32.lib。
单击Project Settings中的C/C++标签,将Preprocessor definitions 中的_CONSOLE改为_WINDOWS。最后单击OK即可。
b. 选中菜单Project->Add To Project->Files项(或用鼠标右键),把glu32.lib、glut32.lib、opengl32.lib加入到项目中,在FileView中会有显示。
5. 最后在该项目下新建源程序文件编写程序代码。
二 . 编写程序,学会使用基本图元变换。
1 #include <gl/glut.h>
2 #include <math.h>
3 const int n = 60;
4 const GLfloat R = 0.2f;
5 const GLfloat Pi = 3.1415926536f;
6 void myDisplay(void)
7 {
8 int i;
9 glClear(GL_COLOR_BUFFER_BIT);
10 // glShadeModel(GL_FLAT);
11 // glShadeModel(GL_SMOOTH);
12 //点
13 glPointSize(2.0);
14 glBegin(GL_POINTS);
15 glVertex2f(0.0f, 0.0f);
16 glEnd();
17 //由闭合折线组成的圆
18 glBegin(GL_LINE_LOOP);
19 glColor3f(1.0,1.0,0.0);
20 for(i=0; i<n; ++i)
21 glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
22 glEnd();
23 //由不闭合折线组成的两个三角形构成的六星阵图
24 glBegin(GL_LINE_STRIP);
25 glColor3f(1.0,0.0,0.0);
26 glVertex2f(0.0,0.2);
27 glVertex2f(0.1732,-0.1);
28 glVertex2f(-0.1732,-0.1);
29 glVertex2f(0.0,0.2);
30 glEnd();
31 glBegin(GL_LINE_STRIP);
32 glVertex2f(0.0,-0.2);
33 glVertex2f(0.1732,0.1);
34 glVertex2f(-0.1732,0.1);
35 glVertex2f(0.0,-0.2);
36 glEnd();
37 //连续三角形组成的扇形
38 glBegin(GL_TRIANGLE_FAN);
39 glVertex2f(0.5,0.5);
40 glVertex2f(0.5,1.0);
41 glColor3f(0.8,0.2,0.5);
42 glVertex2f(0.8,0.9);
43 glColor3f(0.2,0.5,0.8);
44 glVertex2f(0.9,0.8);
45 glColor3f(0.8,0.5,0.2);
46 glVertex2f(1.0,0.5);
47 glEnd();
48 //虚线
49 glLineWidth(3.0);
50 glEnable(GL_LINE_STIPPLE);
51 glLineStipple(2, 0x0F0F);
52 glBegin(GL_LINES);
53 glColor3f(0.0,0.0,1.0);
54 glVertex2f(-0.5f, 1.0f);
55 glColor3f(1.0,1.0,1.0);
56 glVertex2f(-0.5f,-1.0f);
57 glEnd();
58 //线
59 glLineWidth(0.5);
60 glDisable(GL_LINE_STIPPLE);
61 glBegin(GL_LINES);
62 glColor3f(1.0,0.0,0.0);
63 glVertex2f(0.5f, 1.0f);
64 glColor3f(1.0,1.0,1.0);
65 glVertex2f(1.0f, 0.5f);
66 glEnd();
67 glFlush();
68 }
69
70 int main(int argc, char *argv[])
71 {
72 glutInit(&argc, argv);
73 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
74 glutInitWindowPosition(0, 0);
75 glutInitWindowSize(600, 600);
76 glutCreateWindow("第一个OpenGL程序");
77 glutDisplayFunc(&myDisplay);
78 glutMainLoop();
79 return 0;
80 }
运行结果为:
修改代码:
在右下角添加一个三角形:
//右下角的三角形
glBegin(GL_LINE_STRIP);
glColor3f(0.0,0.0,1.0); //表示颜色为蓝色
glVertex2f(0.6,-0.5);
glVertex2f(0.8,-0.8);
glVertex2f(0.4,-0.8);
glVertex2f(0.6,-0.5);
glEnd();
在左下角添加一个圆形:
//左下角的圆形
const GLfloat R2 = 0.15f;
glBegin(GL_LINE_LOOP);
glColor3f(0.0,1.0,0.0); //表示颜色为绿色
for(i=0;i<n;i++)
glVertex2f(R2*cos(2*Pi/n*i)-0.75,R2*sin(2*Pi/n*i)-0.7);
修改后运行结果如下:
附常用参数:
表示形态:
GL_POINTS 单个顶点集
GL_LINES 多组双顶点线段
GL_POLYGON 单个简单填充凸多边形
GL_TRAINGLES 多组独立填充三角形
GL_QUADS 多组独立填充四边形
GL_LINE_STRIP 不闭合折线
GL_LINE_LOOP 闭合折线
GL_TRAINGLE_STRIP 线型连续填充三角形串
GL_TRAINGLE_FAN 扇形连续填充三角形串
GL_QUAD_STRIP 连续填充四边形串
表示颜色:
glColor3f(0.0, 0.0, 0.0); --> 黑色
glColor3f(1.0, 0.0, 0.0); --> 红色
glColor3f(0.0, 1.0, 0.0); --> 绿色
glColor3f(0.0, 0.0, 1.0); --> 蓝色
glColor3f(1.0, 1.0, 0.0); --> 黄色
glColor3f(1.0, 0.0, 1.0); --> 品红色
glColor3f(0.0, 1.0, 1.0); --> 青色
glColor3f(1.0, 1.0, 1.0); --> 白色