您的位置:首页 > 运维架构

第一个OpenGL程序--基于VS2005和GLUT

2010-05-28 15:29 435 查看
//=====================================================================
//TITLE:
// 第一个OpenGL程序--基于VS2005和GLUT
//AUTHOR:
// norains
//DATE:
// Friday 28-May-2010
//Environment:
// Windows XP
//=====================================================================



万事开头难,OpenGL也是如此。对于一个没有接触过OpenGL的朋友而言,往往会觉得一片茫然,无处下手。那么今天,我们就从零开始,来实现我们的第一个OpenGL程序。



我们的系统是Windows XP,所以开发工具我们自然而然也选择微软出品--Visual Studio 2005(以下简称vs2005)。其实,当安装完毕vs2005之后,就可以直接开发OpenGL程序了,因为相应的头文件和lib库已经随之安装。只不过,这一切并不完美,这个自带的OpenGL只是1.1的版本,如果想更新为最新版,还需要我们自己动手。



本篇文章的例子,是基于GLUT。那么,GLUT是什么呢?



GLUT全称是OpenGL Utility Toolkit,是一个独立的窗口系统。它提供了一组简单的编程接口,方便我们学习和探索OpenGL程序。使用GLUT,会让我们的开发更为简单。只不过可惜的是,GLUT并不是开放源代码的。



GLUT可以在此下载:http://www.opengl.org/resources/libraries/glut/



截止到本文,最新版为3.7,可以直接于此下载:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip



将下载回来的文件解压,会有如下文件:
Glut.h
Glut.lib
Glut.dll
Glut32.lib
Glut32.dll



为了让我们能够顺利编译程序,这几个文件我们需要将它们放到相应的地方。放置的方式有两种,一种是基于系统,另一种是基于工程。现在分别来介绍这两种方式。





一. 基于系统



1. glut.h文件放置于vs2005安装目录下的VC/PlatformSDK/Include/gl



2. Glut.lib,Glut32.lib放置于VC/lib



3. Glut.dll,Glut32.dll放置于windows/System32







二. 基于工程

1. 将整个文件夹拷贝到工程的同级目录





2. 工程属性设置额外的lib所在的文件夹为"./glut"



3. 将glut.dll,glut32.dll拷贝到system32或生成的exe文件的同级目录下。

这两种方式各有优缺点。前者的方式独立于工程,可以称为一劳永逸,只要放置好了,后续新的OpenGL工程可以不做额外工夫;而后者则必须每建立一个新的工程,就必须做相应的修改,但好处却又是很明显,只要在本机上能编译通过,那么将该工程打包以后,在别的机器上也能顺利成功。至于选择哪种方式,就看各位的喜好了。

开发环境搭建完毕,那么我们就来开始第一个程序吧!

1.打开v2005,选择File->New->Project,然后选择Win32 Console Application,随便填一个名字,然后按OK。



2.在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。



3.建立一个OpenGL.cpp文件



4.文件中输入如下代码:
#include ".//glut//glut.h"
void myDisplay(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glRectf(-0.5f, -0.5f, 0.5f, 0.5f); 
    glFlush(); 
} 
int main(int argc, char *argv[]) 
{ 
 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 
    glutInitWindowPosition(100, 100); 
    glutInitWindowSize(400, 400); 
    glutCreateWindow("Hello OpenGL!"); 
    glutDisplayFunc(&myDisplay); 
    glutMainLoop(); 
    return 0; 
}




编译,运行,我们第一个OpenGL程序就揭开了它神秘的面纱:



注:本文的代码参考于此篇文章:http://blog.csdn.net/wangwei200508/archive/2008/02/29/2133552.aspx,在此对作者表示感谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: