代码改变世界

VS2005+OPENGL

2010-12-01 16:00  bingcaihuang  阅读(393)  评论(0编辑  收藏  举报

原创  VS2005+OPENGL 收藏

1.选择编译环境,选择VS2005作为学习OPENGL的环境;

2.配置OPENGL:

项目 -->选择属性 C\C++-->preprocessor-->preprocessor definition添加GLUT_BUILDING_LIB,中间用分号隔开,

然后点击linker-->input--> additional dependencies添加glut32.lib,Opengl32.lib,Glu32.lib

3.安装glut工具包:

GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装,在opengl官网可以下载,貌似链接比较难找,英文网就是麻烦,解压下载到的压缩文件,放到VC\PlatformSDK\include\gl文件夹目录下,把解压得到的glut.libglut32.lib放到静态函数库所在文件夹,即是lib文件夹,把解压得到的glut.dllglut32.dll放到操作系统目录下面的system32文件夹内;

4.建立OPENGL工程,需要包含头文件#include <GL/glut.h>,这是GLUT的头文件。本来OpenGL程序一般还要包含<GL/gl.h><GL/glu.h>,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含。

注意:在建立Win32 Console Application控制台程序后,显示OPENGL窗口的同时还有控制台程序的命令行窗口,如果在使用GLUT过程中有任何错误或者警告,都会直接显示到命令行窗口,如果想去掉此命令行窗口,在建立工程的时候应该选择“Win32 Application”,对于已经建好的工程,需要在Projcet->Properties-> Configuration Properties->Linker->System那个窗口里面,把SubSystem选项由 Console改为Windows),并在程序开始时使用WinMain作为程序入口,而不是main

修改后代码框架:

 

  1. #include <windows.h>  
  2. #include <GL/glut.h>  
  3. void myDisplay(void)  
  4. {  
  5.     glClear(GL_COLOR_BUFFER_BIT);  
  6.     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);  
  7.     glFlush();  
  8. }  
  9. int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev,  
  10.                    PSTR CmdLine, int iCmdShow)  
  11. {  
  12.     int argc = 1;  
  13.     char *argv[] = {"OpenGL Application"};  
  14.     glutInit(&argc, argv);  
  15.     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);  
  16.     glutInitWindowPosition(100, 100);  
  17.     glutInitWindowSize(400, 400);  
  18.     glutCreateWindow("第一个OpenGL程序");  
  19.     glutDisplayFunc(&myDisplay);  
  20.     glutMainLoop();  
  21.     return 0;  
  22. }  
 

 

注意这个程序和前面的示例所不同的地方:
1
、多加了头文件:#include <windows.h>
2
main变成了WinMain,并且函数的参数有所不同。
3
、在WinMain中,定义了假的argcargv,方便使用glutInit函数。虽然看起来有些别扭,但总算是成功的将GLUT给初始化好了。