opengl和glut

OpenGL简介

OpenGL是目前用于开发可移植的、可交互的2D和3D图形应用程序的首选环境,也是目前应用最广泛的计算机图形标准。OpenGL是SGI公司开发的一套的计算机图形处理系统,是图形硬件的软件接口,GL代表图形库(Graphics Library)。OpenGL具有可移植性,任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统,在任何一个遵循OpenGL标准的环境下都会产生相同的可视效果。

OpenGL不是一种编程语言,而是一种API(Application Programming Interface,应用程序编程接口)。当我们说某个程序是基于OpenGL的或者说它是个OpenGL程序是,意思是说它是用某种编程语言如C或C++编写的,其中调用了一个或多个OpenGL库函数。作为一种API,OpenGL遵循C语言的调用约定。

OpenGL主要包括三个函数库,它们是核心库、实用函数库和编程辅助库。核心库中包含了OpenGL最基本的命令函数。核心库提供了一百多个函数,这些函数都以”gl”为前缀,用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。实用函数库是比核心库更高一层的函数库,它提供四十多个函数,这些函数都以”glu”为前缀。由于OpenGL是一个图形标准,是独立于任何窗口系统或操作系统的,在OpenGL中没有提供窗口管理和消息事件响应的函数,也没有鼠标和键盘读取事件的功能,所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以”aux”作为前缀。值得一提的是,目前AUX编程辅助库已经很大程度上被GLUT库取代了。以下介绍以GLUT库为例。

     GLUT代表OpenGL应用工具包(OpenGL Utility Toolkit),是一个与窗口系统无关的工具包。它作为AUX库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性。GLUT的子程序的前缀使用”glut”。

一、下面以windows及visualC++为例介绍使用预编译库进行安装的过程:

(1)将gult32.dll复制到windows系统system32下

(2)将gult32.lib复制到vc的lib目录下

(3)将gult.h复制到vc的includeGL下

二、一个简单的OpenGL程序

#include <windows.h>

#include <gl/glut.h>

//绘图子程序

void display( void ) {

       glClearColor( 1.0f,1.0f,1.0f,1.0f );              // 设置清除窗口时将窗口设为白色

       glClear( GL_COLOR_BUFFER_BIT );// 执行窗口清理

       glFlush();       // 刷新OpenGL中的命令队列和缓冲区,使所有尚未被执行的命令执行

}

void main( int argc,char** argv ) {

       glutInit( &argc, argv );         // 初始化GLUT库

       glutInitDisplayMode( GLUT_SINGLE| GLUT_RGB ); // 显示模式

       glutCreateWindow( "Hello OpenGL!" ); // 创建一个窗口,参数为窗口的标题

       glutDisplayFunc( display );           // 绘制当前窗口

       glutMainLoop();//通常用于程序的结尾,表示开始运行程序.显示出所有创建的窗口

}

 

OpenGL扩展机制(OpenGL Extensions)是OpenGL的亮点之一。显卡的更新,带来了更多,更炫的新特性,使我们能够利用硬件的出色发挥来绘制出令人惊叹的3D画面。利用OpenGL的扩展机制,任何硬件厂商提供的新特性可以用方便的被我们的OpenGL程序所使用。(在这里不得不提一下OpenGL最强有力的对手Direct3D,Direct3D的更新机制是通过升级DirectX SDK开发包来实现了,这给我们的学习带来了不少的麻烦,我们不得不面对版本升级带来的各种问题,在这一点上,OpenGL的优势很明显)。
在使用OpenGL Extensions之前,一定要检查你的显卡是否支持这个扩展,只有确保了你的显卡支持这个扩展特性,才可以放心的使用。可以通过一些工具,如glview来完成这样的工作。
OpenGL的扩展机制使用起来并不复杂,但是仍然有一些人做了许多有益的工作,简化了我们使用OpenGL扩展的步骤,使我们使用OpenGL扩展就像OpenGL API自带的那样方便。这其中比较有名的是glext和GLEW,这这里我主要介绍GLEW.GLEW的全称是"OpenGL Extension Wrangler Library".GLEW主要帮助C/C++完成两项烦琐的任务:1)初始化和使用扩展;2)编写可移植的程序。有关GLEW更详细的资料和获取GLEW,可以查阅网站:http://glew.sourceforge.net/
有了以上的预备知识,我们就可以在我们程序中使用一些新特性,下面以ARB_multiTexture为例,讲讲具体的操作:
预备工作:
  硬件条件:一个支持ARB_multiTexture的显卡(怎么,不支持?要么升级显卡驱动,要么换个新的显卡吧:)
  软件条件:GLUT3.7.6--http://www.xmission.com/~nate/glut.html
           GLEW1.2.4--http://glew.sourceforge.net/
具体步骤:
1.确保GLUT和GLEW已经正确的安装。
2.包含头文件和连接库文件:
     #include <GL\glew.h>
     #include <GL\glut.h>  //注意,glew.h必须放在最前面
  连接库文件:opengl32.lib glu32.lib glut32.lib glew32.lib
3.glut和glew的初始化,glew必须在正确设定了Render Context后才能初始化,即在调用了glutCreateWindow()后才能初始话glew

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/houdy/archive/2004/10/06/126062.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值