VC6.0 OpenGL开发环境配置和基本图元变换

一 . VC6.0 OpenG力开发环境配置

  1.  下载glut压缩包。该包内含有glut.dll、glut.h、glut.lib、glut32.dll、glut32.lib五个文件。
  2. 复制glut.dll和glut32.dll到系统盘->windows/system32文件夹下(64位系统,则复制到SysWOW64文件夹下),复制glut.lib和glut32.lib到VC安装目录的vc98/lib文件夹下,复制glut.h到vc98/include/GL文件夹下(如果没有,可以自己新建一个)。

  3. 创建VC工程:选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里。

  4. 链接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 } 
View Code

运行结果为:

        

修改代码:

在右下角添加一个三角形:

//右下角的三角形
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(); 
View Code

在左下角添加一个圆形:

//左下角的圆形
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);
View Code

修改后运行结果如下:

        

 附常用参数:

  表示形态:

  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);  --> 白色 

 

posted @ 2016-04-24 20:24  小z1情调  阅读(162)  评论(0编辑  收藏  举报