一、下面将对VS2010中配置OpenGL进行简单介绍。

学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。

我选择Visual Studio 2010和VC6++作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接:
http://upload.programfan.com/upfile/200607311626279.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件,分别是glut.h,glut.lib,glut32.lib,glut.dll,glut32.dll 2、将其中的glut.h放到C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl里面,VS2010会自动搜索这个路径。

3. 将glut.lib和glut32.lib复制到F:\vs2010\VC\lib下,根据VS2010的具体安装路径确定。

4. 将glut.dll和glut32.dll复制到C:\WINDOWS\system32下。

至此,环境已经配置好了。

 

下面来开发一个简单的c++程序,环境vs2010中的vc

1. 新建->项目->win32控制台应用程序。

2. 输入项目名:simpleGL,其他默认即可。

3. 输入源代码:

 1 #include <gl/glut.h>
 2 #include <stdio.h>
 3 #include <time.h>
 4 
 5 //太阳、地球和月亮
 6 //假设每个月都是30天
 7 //一年12个月,共是360天
 8 static int day = 200;//day的变化:从0到359
 9 
10 double CallFrequency()
11 {
12     static int count;
13     static double save;
14     static clock_t last,current;
15     double timegap;
16 
17     ++count;
18     if(count<=50)
19         return save;
20     count = 0;
21     last = current;
22     current = clock();
23     timegap = (current-last)/(double)CLK_TCK;  
24     save = 50.0/timegap;
25     return save;
26 }
27 
28 void myDisplay(void)
29 {
30     double FPS = CallFrequency();
31     printf("FPS = %f\n",FPS);
32 
33     glEnable(GL_DEPTH_TEST);
34     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
35 
36     glMatrixMode(GL_PROJECTION);
37     glLoadIdentity();
38     gluPerspective(75,1,1,400000000);
39     glMatrixMode(GL_MODELVIEW);
40     glLoadIdentity();
41     gluLookAt(0,-200000000,200000000,0,0,0,0,0,1);
42 
43 
44     //绘制红色的“太阳”
45     glColor3f(1.0f,0.0f,0.0f);
46     glutSolidSphere(69600000,20,20);
47     //绘制蓝色的“地球”
48     glColor3f(0.0f,0.0f,1.0f);
49     glRotatef(day/360.0*360.0,0.0f,0.0f,-1.0f);
50     glTranslatef(150000000,0.0f,0.0f);
51     glutSolidSphere(15945000,20,20);
52     //绘制黄色的“月亮”
53     glColor3f(1.0f,1.0f,0.0f);
54     glRotatef(day/30.0*360.0-day/360.0*360.0,0.0f,0.0f,-1.0f);
55     glTranslatef(38000000,0.0f,0.0f);
56     glutSolidSphere(4345000,20,20);
57 
58     glFlush();
59     glutSwapBuffers();
60 }
61 
62 void myIdle(void)
63 {
64     ++day;
65     if(day>=360)
66         day = 0;
67     myDisplay();
68 }
69 
70 int main(int argc,char *argv[])
71 {
72     glutInit(&argc,argv);
73     glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
74     glutInitWindowPosition(100,100);
75     glutInitWindowSize(400,400);
76     glutCreateWindow("太阳,地球和月亮");
77     glutDisplayFunc(&myDisplay);
78     glutIdleFunc(&myIdle);
79     glutMainLoop();
80 
81     return 0;
82 }
View Code

相关文章:

  • 2021-12-04
  • 2021-10-13
  • 2021-04-28
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-12-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
  • 2022-12-23
  • 2021-07-28
  • 2022-12-23
相关资源
相似解决方案