OpenGL教程

合集下载

OpenGL ES教程十

OpenGL ES教程十

OpenGL ES 10 –多重纹理,重复纹理,并结束书本时代我的朋友昨晚留在我家,并且我们喝点啤酒一起聊天。

这时候我告诉他我正在写一些教程。

所有的时间都是我在说,他的脸上不断的出现这是什么什么的表情,我告诉他,所有人都在网上看到这些教程。

他不赞成这个:把所有的东西都放在网上实在是太奇怪了。

我自己在想,现在已经不是书本的时代了,我们可以在网上看到许多好的教程,来帮助我们学习。

是时候结束书本时代了。

(伟大的共享精神万岁!!!)本教程需要使用的纹理在这里下载: Tutorial10Textures.zip改变loadTexture[]第一件需要做的是就是改变loadTexture[]. 基本上,我们可以改变调用如下:- (void)loadTexture:(NSString *)name intoLocation:(GLuint)location;向前看。

我们改变loadTexture[] 函数让它知道加载纹理的名词和路径就可以加载纹理. 现在改变loadTexture[] 函数如下:- (void)loadTexture:(NSString *)name intoLocation:(GLuint)location {CGImageReftextureImage =[UIImageimageNamed:name].CGImage;不要忘记删除@”checkerplate.png” 取而带之的是我们的文件名. 删除glGenTextures() 函数并且改变glBindTexture() 函数如下:glBindTexture(GL_TEXTURE_2D, location);就是这样,现在这个方法更加的有用,我们将调用glGenTextures() 在我们的initWithCoder[] 函数里。

当我们要加载某个纹理的时候,我们就调用loadTexture[] ,在本教程里,我们将加载6个纹理, 所以在initWithCoder[] 里调用完setupView, 我们增加如下的函数:[selfsetupView];glGenTextures(6, &textures[0]);[selfloadTexture:@"bamboo.png" intoLocation:textures[0]]; [selfloadTexture:@"flowers.png" intoLocation:textures[1]];[selfloadTexture:@"grass.png" intoLocation:textures[2]];[selfloadTexture:@"lino.png" intoLocation:textures[3]];[selfloadTexture:@"metal.png" intoLocation:textures[4]];[selfloadTexture:@"schematic.png" intoLocation:textures[5]]; 另外,切换到头文件,改变纹理如下:GLuinttextures[6];获得渲染好,回到drawView[]. 删除有关金字塔的所有东西。

opengl使用手册 简书

opengl使用手册 简书

OpenGL(Open Graphics Library)是一种用于渲染2D和3D图形的跨平台图形API。

OpenGL提供了一系列的函数,可以用来配置图形环境、绘制几何图形、处理纹理、执行变换等。

以下是一个简要的OpenGL使用手册的概述:1. 初始化OpenGL环境:-创建OpenGL上下文,配置窗口和视口,初始化OpenGL的各种参数。

2. 设置投影和视图矩阵:-使用OpenGL的矩阵操作函数,设置投影矩阵和视图矩阵,定义场景中物体的可见范围和视图。

3. 创建和加载着色器:-编写顶点着色器和片元着色器,将它们编译成着色器程序,并链接到OpenGL上下文。

4. 创建和绑定缓冲区对象:-创建顶点缓冲对象(VBO)和索引缓冲对象(IBO)来存储顶点数据和索引数据。

5. 定义顶点数据和绘制图形:-定义顶点数据,将数据传递到缓冲区对象中,使用OpenGL函数绘制图形。

6. 处理纹理:-加载纹理图像,创建纹理对象,将纹理数据传递到GPU,使用纹理进行图形渲染。

7. 执行变换:-使用OpenGL的矩阵操作函数,对物体进行平移、旋转、缩放等变换。

8. 设置光照和材质:-配置光源和材质属性,实现光照效果。

9. 深度测试和遮挡剔除:-启用深度测试和遮挡剔除,以处理物体的深度关系和遮挡关系。

10. 处理用户输入:-处理用户输入,例如键盘和鼠标事件,以交互式地改变场景。

11. 错误处理:-添加错误检查,确保OpenGL函数的调用没有错误,方便调试。

12. 清理和释放资源:-在程序结束时清理和释放分配的OpenGL资源,防止内存泄漏。

13. OpenGL扩展:-了解和使用OpenGL的扩展,以获取更先进的图形特性。

14. 学习资源:-利用OpenGL的学习资源,包括在线教程、书籍和社区,以深入了解图形编程。

请注意,上述步骤是一个简要的概述。

OpenGL是一个庞大而灵活的库,涵盖了广泛的图形编程概念。

深入学习OpenGL需要时间和实践。

OpenGL完全教程 第一章 初始化OpenGL

OpenGL完全教程 第一章 初始化OpenGL

OpenGL完全教程 第一章 初始化OpenGL作者:何咏 日期:2006-2-3 20:47:09 点击:3373如需转载本文,请声明作者及出处。

第一章初始化OpenGL无论是什么东西,要使用它,就必须对它进行初始化。

如果你之前使用过GDI,你应该也多多少少了解到GDI 在绘制图形之前要为之创建渲染环境。

OpenGL也一样。

本章给出的代码,大家可以不必理解其中的具体意义,反正以后每次初始化是使用这个代码即可。

首先,在一个新的应用程序中,我们需要添加对OpenGL库的引用。

Delphi已经为我们写好了OpenGL的头文件,因此我们只须直接在单元的uses中添加OpenGL即可:...uses Windows, Graphics, OpenGL, ......在创建窗口时,应添加如下代码:procedure Form1.Create(Sender:TObject);var DC: HDC;HRC :HGLRC ; pfd:TPIXELFORMATDESCRIPTOR; pixelFormat:integer;beginDC := GetDC(Handle);With pfd dobeginnSize:=sizeof(TPIXELFORMATDESCRIPTOR); // sizenVersion:=1; // versiondwFlags:=PFD_SUPPORT_OPENGL or PFD_DRAW_to_WINDOW orPFD_DOUBLEBUFFER; // support double-bufferingiPixelType:=PFD_TYPE_RGBA; // color typecColorBits:=24; // preferred color depthcRedBits:=0;cRedShift:=0; // color bits (ignored)cGreenBits:=0;cGreenShift:=0;cBlueBits:=0;cBlueShift:=0;cAlphaBits:=0;cAlphaShift:=0; // no alpha buffercAccumBits:=0;cAccumRedBits:=0; // no accumulation buffer,cAccumGreenBits:=0; // accum bits (ignored)cAccumBlueBits:=0;cAccumAlphaBits:=0;cDepthBits:=16; // depth buffercStencilBits:=0; // no stencil buffercAuxBuffers:=0; // no auxiliary buffersiLayerType:=PFD_MAIN_PLANE; // main layerbReserved:=0;dwLayerMask:=0;dwVisibleMask:=0;dwDamageMask:=0;end;pixelFormat := ChoosePixelFormat(DC, @pfd);if (pixelFormat = 0) thenexit;if (SetPixelFormat(DC, pixelFormat, @pfd) <> TRUE) thenexit;hRc := wglCreateContext(DC);wglMakeCurrent(DC,HRC);end;上面的代码是Windows下初始化OpenGL的固定代码。

Qt_OpenGL_教程

Qt_OpenGL_教程

(由 nehewidget.cpp 展开。 ) #include "nehewidget.h" NeHeWidget::NeHeWidget( QWidget* parent, const char* name, bool fs ) : QGLWidget( parent, name ) { fullscreen = fs; 保存窗口是否为全屏的状态。 setGeometry( 0, 0, 640, 480 ); 设置窗口的位置,即左上角为(0,0)点,大小为 640*480。 setCaption( "NeHe's OpenGL Framework" ); 设置窗口的标题为“NeHe's OpenGL Framework” 。 if ( fullscreen ) showFullScreen(); 如果 fullscreen 为真,那么就全屏显示这个窗口。 } 这个是构造函数,parent 就是父窗口部件的指针,name 就是这个窗口部件的名称,fs 就是 窗口是否最大化。 NeHeWidget::~NeHeWidget() { } 这个是析构函数。 void NeHeWidget::initializeGL() { glShadeModel( GL_SMOOTH ); 这一行启用 smooth shading(阴影平滑)。阴影平滑通过多边形精细的混合色彩,并对外部光 进行平滑。我将在另一个教程中更详细的解释阴影平滑。 glClearColor( 0.0, 0.0, 0.0, 0.0 ); 这一行设置清除屏幕时所用的颜色。 如果您对色彩的工作原理不清楚的话, 我快速解释一下。 色彩值的范围从 0.0 到 1.0。0.0 代表最黑的情况,1.0 就是最亮的情况。glClearColor 后的第 一个参数是红色,第二个是绿色,第三个是蓝色。最大值也是 1.0,代表特定颜色分量的最亮 情况。最后一个参数是 Alpha 值。当它用来清除屏幕的时候,我们不用关心第四个数字。现 在让它为 0.0。我会用另一个教程来解释这个参数。 通过混合三种原色(红、绿、蓝) ,您可以得到不同的色彩。希望您在学校里学过这些。因 此 , 当 您 使 用 glClearColor(0.0, 0.0,1.0, 0.0 ) , 您 将 用 亮 蓝 色 来 清 除 屏 幕 。 如 果 您 用 glClearColor(0.5, 0.0, 0.0, 0.0)的话,您将使用中红色来清除屏幕。不是最亮(1.0),也不是最 暗(0.0)。要得到白色背景,您应该将所有的颜色设成最亮(1.0)。要黑色背景的话,您该将所 有的颜色设为最暗(0.0)。 glClearDepth( 1.0 ); 设置深度缓存。 glEnable( GL_DEPTH_TEST ); 启用深度测试。 glDepthFunc( GL_LEQUAL ); 所作深度测试的类型。

OpenGL ES教程一

OpenGL ES教程一

图元是构成复杂物体的基本绘图要素。

在OpenGL ES中,你可以使用的图元有点,线,三角形。

它们都有非常强的自我解释性,我觉得你需要有些例子让你看到它们。

首先,让我们来看看一些代码,然后我们可以谈论这是怎么回事,这样您就可以使用它来创建一些自己的代码。

图元#1 -三角形三角形是最“复杂”的图元,但是很容易使用,并且非常实用,这将是你可以绘制的第一个OpenGL的图元。

当我们绘制一个三角形的时候,我们需要告诉OpenGL在3d空间中的三角形的3系坐标,并且,OpenGL将非常顺利的渲染这个三角形。

在开始之前,复制00教程中的项目代码或者从这里下载下项目代码:AppleCoder-OpenGLES-00.tar.gz .在XCode中打开,开启EAGLView.m文件,找到drawView函数。

这里就是施展魔法的地方。

首先,我们需要定义一个三角形。

要做到这点,我们需要知道在我们要处理的坐标的两种类型:模型和世界。

模型坐标是指我们正在绘制的实际图元,世界坐标告诉OpenGL观察者在哪里。

(在世界坐标中,观察者一般在(0.0,0.0,0.0)的地方)第一个例子将说明这点。

首先,我们定义这个三角形在模型空间使用3 x 3d 坐标(x,y,z):constGLfloattriangleVertices[] = {0.0, 1.0, -6.0,// Triangle top centre-1.0, -1.0, -6.0,// bottom left1.0, -1.0, -6.0,// bottom right};如上所示,这里使用了3个坐标来表示一个三角形,需要注意的是,我们定义三角形顶点是逆时针来显示的。

虽然描述三角形的可以用逆时针也可以用顺时针,但是我们必须和上述一样用逆时针来描述三角形。

不过,我建议你用逆时针来描述三角形,因为我们以后可以用逆三角形来达到一些先进的功能。

(补充:逆三角形在3d中被认为是正面,而顺三角形则被认为是反面。

openal教程

openal教程

openal教程(一)简介欢迎来到OPENAL的世界!OPENAL一直在不断的创新,几乎没有一个API能达到她的全部潜能。

一个很大的原因是因为hardware加速建立在特殊的版卡上。

然而,Creative Labs是APENAL的主要支持者,同时也是最大声卡厂商之一。

OPENAL的另一个主要支持者LOKI。

OPENAL不是商业产品,那样做限制了她的发展。

我只知道在PC游戏中用OPENAL。

OPENAL有许多的潜能,有许多的声音库工作在最底层的hardware上。

但OPENAL的设计者经过无数的测试使她成为一个高级的API。

她的风格是自由的,不同的编码风格和hardware部件将充分运用她的功能。

有OPENGL编程精练的人将很快掌握OPEN AL。

OPENAL有建立3D环境音效的能力。

OPENAL是very cool,她是一个非常清晰的API并且能融入你的代码。

你将做出很COOL的音效,下面让我们进入COOL COOL的OPENAL世界。

#include <conio.h>#include <stdlib.h>#include <al/al.h>#include <al/alc.h>#include <al/alu.h>#include <al/alut.h>你会发现再OPENAL头和OPENGL头的定义上有许多的相似之处。

除了“al.h","alu.h","alut.h"与”gl.h","glu.h","glut.h"相似,还增加了一个"alc.h".ALC(AUDIO LIBRARY CONTEXT)处理声音通过不同的平台,她也处理你在几个窗口下共享设备的环境。

// 存储声音数据ALuint Buffer;// 用于播放声音ALuint Source;这是程序处理结构的初始化。

NeHe的OpenGL教程

NeHe的OpenGL教程

Jeff Molofee(NeHe)的OpenGL教程- 新手上路译者的话:NeHe的教程一共有30多课,内容翔实,并且不断更新。

国内的网站实在应该向他们学习。

令人惊讶的是,NeHe提供的例程源码几乎都有跨平台的不同编译版本,涉及从Visual C++、Borland C++、Visual Basic、MacOS X/GLUT、Linux/GLX、Code Warrior、Delphi、C++ Builder、MASM、ASM、MingW32&Allegro以及Python等等的不同平台下的多种编译器。

这在国内市场上的百元大书中似乎也未曾见到。

关于OpenGL,是最早由SGI开发的跨平台的工业标准的3D图形硬件的软件接口,与微软的DirectX所鼎立,不必我来多吹。

由于CKER只是业余水准,关于OpenGL的专用术语的翻译难免有错误和不妥之处,请多加指正。

另外,要想流畅的运行例程,您的爱机应该够劲,内存应该够大,还要支持3D硬件加速的显卡。

第一课的内容有些简单,但这是NeHe几乎所有的OpenGl例程的框架。

他有太废话,但看看不会错的。

原文:Lesson 1: Setting Up OpenGL In Windows译者:CKER欢迎来到我的OpenGL教程。

我是个对OpenGL充满激情的普通男孩。

我第一次听说OpenGL 是3Dfx发布Voodoo1卡的OpenGL硬件加速驱动的时候。

我立刻意识到OpenGL是那种必须学习的东西。

不幸的是当时很难从书本或网络上找到关于OpenGL的讯息。

我花了N个小时来调试自己书写的代码,甚至在IRC和e-Mail上花更多的时间来恳求别人帮忙。

但我发现那些懂得OpenGL高手们保留了他们的精华,对共享知识也不感兴趣。

实在让人灰心。

我创建这个网站的目的是为了帮助那些对OpenGL有兴趣却又需要帮助的人。

在我的每个教程中,我都会尽可能详细的来解释每一行代码的作用。

OpenGL入门教程(精)

OpenGL入门教程(精)

4、把解压得到的 glut.dll 和 glut32.dll 放到操作系统目录下面的 system32 文件夹内。(典型的位置为: C:\Windows\Sy st em32) 第三步,建立一个 OpenGL 工程 这里以 VisualStudio2005 为例。 选择 File->New->Project,然后选择 Win32 Console Application,选择一个名字,然后按 OK。 在谈出的对话框左边点 Application Settings,找到 Empty project 并勾上,选择 Finish。 然后向该工程添加一个代码文件,取名为“OpenGL.c”,注意用.c 来作为文件结尾。 搞定了,就跟平时的工程没什么两样的。 第一个 OpenGL 程序
在 glutDisplayFunc 函数中,我们设置了“当需要画图时,请调用 myDisplay 函数”。于是 myDisplay 函数就 用来画图。观察 myDisplay 中的三个函数调用,发现它们都以 gl 开头。这种以 gl 开头的函数都是 OpenGL 的标准函数,下面对用到的函数进行介绍。 1、glClear,清除。GL_COLOR_BUFFER_BIT 表示清除颜色,glClear 函数还可以清除其它的东西,但这里 不作介绍。 2、glR ect f,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。 3、glFlush,保证前面的 OpenGL 命令立即执行(而不是让它们在缓冲区中等待)。其作用跟 fflush(stdout) 类似。
OpenGL 入门教程
1.第一课:
说起编程作图,大概还有很多人想起 TC 的#include < graphics.h>吧? 但是各位是否想过,那些画面绚丽的 PC 游戏是如何编写出来的?就靠 TC 那可怜的 640*480 分辨率、16 色来做吗?显然是不行的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenGL教程在这个系列讲座中介绍了有关OpenGL的基本知识,主要涉及颜色、绘制几何体、坐标变换、堆栈操作、显示列表、光照和材质、纹理映射、特殊效果、曲面和曲线的绘制、二次几何体绘制、像素操作、如何绘制动画物体及菜单管理。

通过对讲座中提供的实例的理解消化,读者可以较容易地进入OpenGL的世界。

第一讲基本概念前言随着计算机多媒体技术、可视化技术及图形学技术的发展,我们可以使用计算机来精确地再现现实世界中的绚丽多彩的三维物体,并充分发挥自身的创造性思维,通过人机交互来模拟、改造现实世界,这就是目前最为时髦的虚拟现实技术。

通过这种技术,建筑工程师可以直接设计出美观的楼房模型;军事指挥员可以模拟战场进行军事推演,网民可以足不出户游览故宫博物馆等名胜古迹等。

而虚拟现实技术最重要的一部分内容就是三维图形编程。

当前,三维图形编程工具中最为突出的是SGI公司的OpenGL(Open Graphics Language,开放式的图形语言),它已经成为一个工业标准的计算机三维图形软件开发接口,并广泛应用于游戏开发、建筑、产品设计、医学、地球科学、流体力学等领域。

值得一提的是,虽然微软有自己的三维编程开发工具DirectX,但它也提供OpenGL图形标准,因此,OpenGL可以在微机中广泛应用。

目前,OpenGL在国内外都掀起了热潮,但国内对这一领域介绍的资料并不是很多,特别是有志于在图形图像方面进行深入研究的读者朋友,常常苦于不掌握OpenGL编程接口技术,无法向纵深领域扩展。

为了开启三维图形编程这扇神秘大门,本讲座在结合OpenGL有关理论知识的基础上,着重介绍Visual C++6.0开发环境中的编程实现,由于水平有限,本讲座可能无法面面俱到,存在一些疏漏,但相信它可以将开启"神秘大门"的钥匙交给读者朋友们。

一、OpenGL的特点及功能OpenGL是用于开发简捷的交互式二维和三维图形应用程序的最佳环境,任何高性能的图形应用程序,从3D动画、CAD辅助设计到可视化访真,都可以利用OpenGL高质量、高性能的特点。

OpenGL自1992年出现以来,逐渐发展完善,已成为一个唯一开放的,独立于应用平台的图形标准,一个典型的OpenGL 应用程序可以在任何平台上运行--只需要使用目标系统的OpenGL库重新编译一下。

OpenGL非常接近硬件,是一个图形与硬件的接口,包括了100多个图形函数用来建立三维模型和进行三维实时交互。

OpenGL强有力的图形函数不要求开发人员把三维物体模型的数据写成固定的数据格式,也不要求开发人员编写矩阵变换、外部设备访问等函数,大大地简化了编写三维图形的程序。

例如:1) OpenGL提供一系列的三维图形单元(图元)供开发者调用。

2) OpenGL提供一系列的图形变换函数。

3) OpenGL提供一系列的外部设备访问函数,使开发者可以方便地访问鼠标、键盘、空间球、数据手套等外部设备。

由于微软在Windows中包含了OpenGL,所以OpenGL可以与Visual C++紧密接合,简单快捷地实现有关计算和图形算法,并保证算法的正确性和可靠性。

简单地说,OpenGL具有建模、变换、色彩处理、光线处理、纹理影射、图像处理、动画及物体运动模糊等功能:1、建模OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体,如球、锥、多面体、茶壶以及复杂曲线和曲面(例如Bezier、Nurbs等曲线或曲面)的绘制函数。

2、变换OpenGL图形库的变换包括基本变换和投影变换。

基本变换有平移、旋转、变比、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。

3、颜色模式设置OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。

4、光照和材质设置OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。

材质是用光反射率来表示。

客观世界中的物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。

5、纹理映射(Texture Mapping)利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。

6、位图显示和图象增强OpenGL的图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。

以上三条可是被仿真物更具真实感,增强图形显示的效果。

7、双缓存动画(Double Buffering)OpenGL使用了前台缓存和后台缓存交替显示场景(Scene)技术,简而言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。

8、特殊效果利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。

运动模糊的绘图方式(motion-blured),模拟物体运动时人眼观察所感觉的动感现象。

深度域效果(depth-of-effects),类似于照相机镜头效果,模型在聚焦点处清晰,反之则模糊。

这些三维物体绘图和特殊效果处理方式,说明OpenGL能够模拟比较复杂的三维物体或自然景观。

二、OpenGL工作流程OpenGL的基本工作流程如下图:图一、OpenGL工作流程如上图所示,几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。

在OpenGL中的所有数据包括几何顶点数据和象素数据都可以被存储在显示列表中或者立即可以得到处理。

OpenGL中,显示列表技术是一项重要的技术。

OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;对于象素数据,象素操作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成图形片元。

整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值送入帧缓冲器实现图形的显示。

根据这个流程,我们可以归纳出在OpenGL中进行主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤:1)根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把:点、线、多边形、图像和位图都作为基本图形单元)。

2)把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察所感兴趣的景观。

3)计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照条件、纹理粘贴方式等。

4)把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个过程也就是光栅化(rasterization)。

在这些步骤的执行过程中,OpenGL可能执行其他的一些操作,例如自动消隐处理等。

另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对像素数据进行操作。

三、Windows 中OpenGL库函数及数据类型(一)库函数开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。

它采用C语言风格,提供大量的函数来进行图形的处理和显示。

OpenGL图形库一共有100多个函数,它们分别属于OpenGL的基本库、实用库、辅助库等不同的库。

1、核心库,包含的函数有115个,它们是最基本的函数,其前缀是gl;这部分函数用于常规的、核心的图形处理,由gl.dll来负责解释执行。

核心库中的函数可以进一步分为以下几类函数。

(1)绘制基本几何图元的函数。

glBegain()、glEnd()、glNormal*()、glVertex*()。

(2)矩阵操作、几何变换和投影变换的函数。

矩阵入栈函数glPushMatrix(),矩阵出栈函数glPopMatrix(),装载矩阵函数glLoadMatrix(),矩阵相乘函数glMultMatrix(),当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport()等等。

(3)颜色、光照和材质的函数。

如设置颜色模式函数glColor*()、glIndex*(),设置光照效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial()等等。

(4)显示列表函数。

主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、 glEndList()、glGenLists()、glCallList()和glDeleteLists()等。

(5)纹理映射函数。

主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*()等。

(6)特殊效果函数。

融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*()。

(7)光栅化、象素操作函数。

像素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel()等。

(8)选择与反馈函数。

主要有渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer()等。

(9)曲线与曲面的绘制函数。

生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*()。

(10)状态设置与查询函数。

主要有glGet*()、glEnable()、glGetError()等。

2、实用库(OpenGL utility library,GLU),包含的函数功能更高一些,如绘制复杂的曲线曲面、高级坐标变换、多边形分割等,共有43个,前缀为glu。

Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。

此类函数由glu.dll来负责解释执行。

主要包括了以下几种:(1)辅助纹理贴图函数。

有gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps()等。

相关文档
最新文档