OpenGL的常用接口-2016-10-13

合集下载

opengl简介及实例

opengl简介及实例

C# 实例OpenGL是图形硬件的一个软件接口,是一种快速、高质量的3D图形软件。

它提供了近120个绘制点、线点多边形等3D图形的命令,可以完成绘制物体、变换、光照处理、着色、反走样、融合、雾化、位图和图像、纹理映射、动画等基本操作,通过把这一系列基本操作进行组合,可以构造更复杂的3D物体和描绘丰富多彩、千变万化的客观世界。

C#是以运行库为基础的一种编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果,如面向对象、类型安全等,并被寄希望成为微软发布的用于企业编写基于COM+和视窗系统的程序语言中的最好的一种[2]。

与C++相比,C#的语法更加简洁,调试更加容易,且应用程序开发更加快速。

把C#和OpenGL结合起来开发3D应用程序和软件,将显著提高开发效率。

在C#中,程序间的依赖项通过符号而不是文本来控制,因而不使用头文件,而且opengl32.dll以及opengl32.lib等文件也不能像在C++中那样进行部署和引用,所以,无法直接使用OpenGL所提供的图形库。

在C#中通过调用OpenGL 动态链接库文件:csgl.dll和csgl.native.dll实现OpenGL所提供的强大的图形功能。

这2个文件可以从网页上获取。

csgl.dll中定义了4个名称空间,即CsGL,CsGL.OpenGL,CsGL.Pointers,CsGL.Util,其中,CsGL.OpenGL定义的4个类OpenGL、GL、GLU、GLUT中封装了几乎所有的OpenGL函数、用户库函数、辅助库函数和实用库函数及常量;类OpenGLControl中定义了OpenGL场景绘制函数,如场景的初始化、场景的绘制函数等;类OpenGLContext中定义了OpenGL环境控制命令,如像素格式、调色板的创建等命令。

CsGL.Util定义了键盘、鼠标事件及异常处理等。

为了能够使用这2个文件,先将这2个文件拷贝到系统文件夹%systemroot%╲system32中,然后在项目的属性页对话框中将"引用路径"设置为系统文件夹%systemroot%╲system32,这样C#就可以找到运行/调试应用程序所需要的库文件。

04_2_OpenGL3D图形接口的使用

04_2_OpenGL3D图形接口的使用

android.opengl包
SurfaceView
android.view.View
javax.microedition .khronos.opengles (OpenGL标准类库)
在使用 3D 的图形 API 方面,主要的步骤通常如下 所示: 1 .扩展 android.opengl.GLSurfaceView 类。 2 .实现 android.opengl.GLSurfaceView 中的 Renderer (渲染器)。 3 .实现 GLSurfaceView::Renderer 中的 onDrawFrame() 等函数。
Touch Rotate ( Graphics=>OpenGL ES=>Touch Rotate ) 源代码: android/apis/graphics/TouchRotateActivity.java android/apis/graphics/Cube.java
public class TouchRotateActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mGLSurfaceView = new TouchSurfaceView(this); setContentView(mGLSurfaceView); mGLSurfaceView.requestFocus(); mGLSurfaceView.setFocusableInTouchMode(true); } @Override protected void onResume() { super.onResume(); mGLSurfaceView.onResume(); } @Override protected void onPause() { super.onPause(); mGLSurfaceView.onPause(); } private GLSurfaceView mGLSurfaceView; } class TouchSurfaceView extends GLSurfaceView { private class CubeRenderer implements GLSurfaceView.Renderer {} }

OpenGL使用简介

OpenGL使用简介

void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); //设为双缓冲区,
//平滑动画需要
}
glutInitWindowPosition(100,100); glutInitWindowSize(320,320); glutCreateWindow("Lighthouse 3D - GLUT Tutorial"); glutDisplayFunc(renderScene); glutIdleFunc(renderScene);
一些命名规则
函数:
– OpenGL核心库(gl) – OpenGL实用库(glu) – 对X窗口系统的OpenGL扩展(glX)
举例:
– void glBegin(GLenum mode); – void gluBeginCurve(GLUnurbs* nurb); – void glXFreeContextEXT(Display * dpy, GLXContext ctx);
GLUT
GLUT ( OpenGL Utility Toolkit ) 安装:在windows下通过 C/C++语言编写 GLUT 程序, 你 需要以下三个文件:
– GLUT.H - 你需要在你的源代码中包含这个文件。通常情况下,这个文件应该放在 你系统的包含目录下的 GL 文件夹中。 – GLUT.LIB (SGI windows版本) 以及 glut32.lib (微软版本) - 这个文件必须被连接到 你的程序中, 确保它放在 LIB 目录中。 – glut32.dll (Windows) 和 glut.dll (SGI Windows版本) - 根据你所使用的OpenGL选 择一个,如果你正在使用微软公司的版本,那么你必须选择 glut32.dll。你应该把 DLL放置在你的系统文件夹中。

OpenGL简介

OpenGL简介

OpenGL简介(),Open Graphics Library,开放图形库,是跨语⾔、跨平台的3D图形编程接⼝。

OpenGL使⽤客户端 - 服务器架构设计,应⽤程序为客户端,图形硬件设备为服务器。

客户端负责提交OpenGL命令,服务器执⾏这些命令并渲染出图像。

OpenGL是⼀个状态机,每个状态都有⼀个默认值。

开发者可以设置这些状态,然后让它们⼀直⽣效,直到再次修改它们。

例如:当前颜⾊就是⼀个状态变量,可以把其设置成红⾊,那么在此之后绘制的所有物体都会使⽤这种颜⾊,直到再次把当前颜⾊设置为其他颜⾊。

OpenGL的API可通过软件模拟实现,⾼效实现依赖于显⽰设备⼚商提供的硬件加速。

注:开源()是⼀个纯软件模拟实现的图形API,其代码兼容于OpenGL。

OpenGL规范⽬前由⾮盈利组织()的架构评审委员会(Architecture Review Board,ARB)维护。

ARB主要由操作系统⼚商(Apple Computer、Microsoft【2003.3已退出】等)、图形硬件⼚商(3Dlabs、SGI、NVIDIA、ATI Technologies、Intel等)、技术公司(Mozilla、Google等)和国际3D组织组成。

OpenGL是⼀个不断进化的API,在OpenGL1.2.1版本引⼊扩展(extension)的概念。

OpenGL新版本会定期由Khronos Group发布。

①增加新的扩展API(引⼊新函数和新常量)来增加新功能②放松或取消现有扩展API的限制来增强功能⼀个扩展由两部分组成:包含扩展函数原型的头⽂件和⼚商的设备驱动实现ARB扩展:标准扩展。

由架构评审委员ARB批准发布。

第⼀个ARB扩展是GL_ARB_multitexture(注:在OpenGL1.3中加⼊)。

所有ARB 扩展可从查询。

GL_ARB_multitexture扩展中新增了包含glActiveTextureARB、glClientActiveTextureARB、glMultiTexCoord*ARB函数,共34个。

OpenGL虚拟现实图形程序设计接口

OpenGL虚拟现实图形程序设计接口


1.OpenGL是一种什么样的程序设计接口? 2.OpenGL的程序由什么样的结构构成? 3.OpenGL中纹理效果是如何实现的? 4.Open Inventor具有什么样的应用特点?
6.3 OpenGL程序编写原理与方法
OpenGL中描述图元的方法 OpenGL中描述颜色的方法
OpenGL中描述图元的方法
点、直线和多边形 OpenGL提供了一系列函数。它们都以 glVertex开头,后面跟一个数字和1~2个字 母。例如: glVertex2d glVertex2f glVertex3f glVertex3fv
视口变换
视口变换就是类似于照片的放大与缩小。 在计算机图形学中,它的定义是将经过几 何变换、投影变换和裁剪变换后的物体显 示于屏幕窗口内指定的区域内,这个区域 通常为矩形,称为视口。在OpenGL中的 相关函数是: glViewport(Glint x, Glint y, Glsizei width, GLsizei height);
数字表示参数的个数,字母表示参数的类型,s 表示16位整数(OpenGL中将这个类型定义为 GLshort), i表示32位整数(OpenGL中将这个 类型定义为GLint和GLsizei), f表示32位浮点数 (OpenGL中将这个类型定义为GLfloat和 GLclampf),d表示64位浮点数(OpenGL中将 这个类型定义为GLdouble和GLclampd)。v表示 传递的几个参数将使用指针的方式。这些函数除 了参数的类型和个数不同以外,功能是相同的。
索引模式
在使用索引颜色模式画图时,颜色表的大 小是很有限的,一般在256~4096之间,且 总是2的整数次幂。在使用索引颜色方式进 行绘图时,总是先设置颜色表,然后选择 颜色。

OpenGL

OpenGL

OpenGL的几个常用库的编程风格? 1、基本库( gl.h ): 基本库( 基本库 glBegin, glClear, glCopyPixels, GLint 2、实用函数库( glu.h ) : 实用函数库( 实用函数库 gluOrtho2D 3、实用函数工具包(glut.h): 实用函数工具包( 实用函数工具包 : glutInit, glutInitWindowsPosition
编辑环境及配置
GLUT配置
Visual C++ 6.0 开发环境 glut32.dll C:\WINDOWS\system32 glut32.lib C:\VisualStudio\VC98\Lib glut.h C:\VisualStudio\VC98\Include\GL
编辑环境及配置
进入菜单Project ฀ Settings…, 选择Link 标签,在Object/library modules文本框中加 上 opengl32.lib, glu32.lib, glut32.lib, 注意用空 格分开.
OpenGL函数名称的格式
OpenGL的几个常用库简介: 1、基本库 基本库(又称为核心库,对应的头文件 基本库 gl.h),用来描述图元、属性、几何变换等。 2、 实用函数库 OpenGL Utility,对应的头 实用函数库( 文件glu.h),用来设置观察和投影矩阵等, 可以描述复杂对象,以及完成复杂任务。 3、实用函数工具包 OpenGL Utility Toolkit, 实用函数工具包( 实用函数工具包 对应的头文件glut.h),提供了与任意屏幕 窗口系统进行交互的函数库。
(3)高质量和高性能 ) 无论是在CAD/CAM、三维动画还是可视化仿真 、 无论是在 等领域, 等领域,OpenGL高质量和高效率的图形生成能力都 高质量和高效率的图形生成能力都 能得到充分的体现。在这些领域中, 能得到充分的体现。在这些领域中,开发人员可以利 制作出效果逼真的二、 用OpenGL制作出效果逼真的二、三维图像来。 制作出效果逼真的二 三维图像来。

OpenGL

OpenGL


1、应用广泛:广泛地应用于CAD/CAM、三维动画、数字图象
处理以及虚拟现实等领域 ;无论是在PC机上,还是在工作站 甚至是大型机和超级计算机上,OpenGL都能表现出它的高性 能和强大威力。

2、跨平台性:能够在几乎所有的主流操作系统上运行,包括 UNIX、Mac OS、OS/2、Windows NT、Windows9x、Linux等; 也能够与其中绝大多数的窗口系统一起工作。 3、高质量和高性能:无论是在CAD/CAM、三维动画还是可视 化仿真等领域,OpenGL高质量和高效率的图形生成能力都能 得到充分的体现。
能的服务器能够使用图形工具。

图1-1(a)是Win32平台上OpenGL API的结构简图;(b)是UNIX 平台上OpenGL API的结构简图。 其中“OpenGL”表示OpenGL基本API,这类API的主要功能包括 物体描述、平移、旋转、缩放、光照、纹理、材质、象素、 位图、文字处理等。

值得一提的是,由于Microsoft公司在Windows NT中 提供OpenGL图形标准,OpenGL将在微机中广泛应 用,尤其是OpenGL三维图形加速卡和微机图形工作 站的推出,人们可以在微机上实现三维图形应用, 如CAD设计、仿真模拟、三维游戏等,从而更有机 会、更方便地使用OpenGL及其应用软件来建立自己 的三维图形世界。

从程序开发人员的角度来看,OpenGL是一组绘图命 令的API集合。利用这些API能够方便地描述二维和 三维几何物体,并控制这些物体按某种方式绘制到 显示缓冲区中。OpenGL的API集提供了物体描述、平 移、旋转、缩放、光照、纹理、材质、象素、位图、 文字、交互以及提高显示性能等方面的功能,基本 涵盖了开发二、三维图形程序所需的各个方面。

OpenGL 简介(中英文翻译)

OpenGL 简介(中英文翻译)

译文:OpenGL 简介OpenGL是一个底层图形库规范。

它为程序员提供了一个小的几何图元(点、线、多边形、图片和位图)库和一个支持2D/3D几何对象绘图命令库,通过所提供的图元和命令来控制对象的呈现(绘图)。

由于OpenGL的绘图命令仅限于画一些简单的几何图元(如点、线和多边形),所以OpenGL实用工具包(GLUT)应运而生,它能够帮助绘画出更复杂的三维对象(比如球体、圆环甚至茶壶)。

如果你要构建需要利用到OpenGL全部特性的应用的话,GLUT 未必适合,但是对刚学习OpenGL的人来说GLUT就非常有用。

GLUT是为满足windows系统下OpenGL程序独立编程接口的需求而设计的,接口被设计的非常简单而又实用。

从OpenGL中移除windows系统的操作是一个非常英明的决定,因为这意味着OpenGL图形系统能够被应用于更广泛的系统中(包括功能强大但昂贵的图形工作站以及需要大量图形运算的视频游戏、互动电视机机顶盒和个人电脑)。

GLUT简化了用OpenGL进行渲染的程序的实现。

GLUT应用编程接口(API)只需要调用很少的接口就可以用OpenGL来渲染图形场景,并且GLUT接口所需的参数也相对较少。

渲染管线大多数OpenGL实现都有着类似的操作顺序,这一系列的操作过程叫做OpenGL 渲染管线。

尽管OpenGL并不严格要求需要按照渲染管线这一顺序来实现,但是这样做可以为预测OpenGL下一步将要做什么提供可靠的指引。

几何数据(点、线、多边形)将会沿着一条依次通过求值器、顶点操作和装配阶段的路径进行传递,而像素数据(像素,图形,位图)将会沿着另一条路径传递,在最终像素写入帧缓冲区前,像素数据和几何数据都会经历相同的最后一步——栅格化处理。

Display Lists: 所有数据,无论是用来描述几何体还是像素的,都可以保存在一个display list中来在当下或将来使用(用以替代display list的用法是在需要时立即处理数据——称为立即模式)当一个display list被触发时,保存的数据就像立即模式一样被发送至显示器。

OpenGL

OpenGL
部分功能均可由硬件实现,仅有少量功能 由操作系统来完成,这样极大提高了图形 显示的性能,并且能够获得工作站级的图 形效果,但是这样的图形硬件价格十分昂 贵,非一般用户能承担。
三维图形加速模式
• 一些中低档的图形芯片往往也具备一定的
三维加速功能,由硬件来完成一些较为复 杂的图形操作。一些重要的OpenGL操作, 比如Z缓存等就能够直接由显示卡硬件来完 成,显示卡所不能支持的图形功能,则通 过软件模拟的方式在操作系统中进行模拟。 采用这种方法,显示速度尽管无法与硬件 加速方法相比,但与采用纯软件模拟方式 相比,速度要快得多。
OpenGL
关于OpenGL
• OpenGL的前身是SGI公司为其图形工作站
开发的IRIS GL。 • IRIS GL是一个工业标准的3D图形软件接口, 功能虽然强大但是移植性不好。于是在它 的基础上SGI公司开发了OpenGL。 • OpenGL的英文全称是Open Graphics Library,翻译成中文就是“开放的图形程 序接口”。
OpenGL实用库
• 辅助纹理贴图函数 • 坐标转换和投影变换函数 • 多边形镶嵌工具 • 二次曲面绘制工具 • 非均匀有理B样条绘制工具 • 错误反馈工具
OpenGL辅助库
• 共有31个函数,函数名前缀为aux。 • 这部分函数提供窗口管理、输入输出处理
以及绘制一些简单三维物体。创建aux库是 为了学习和编写OpenGL程序,它更像是一 个用于测试创意的预备基础接管。Aux库在 windows实现有很多错误,因此很容易导致 频繁的崩溃。在跨平台的编程实例和演示 中,aux很大程度上已经被glut库取代。 • OpenGL中的辅助库不能在所有的OpenGL 平台上运行。
Win32 API函数库

OpenGL常用的API

OpenGL常用的API

开发基于OpenGL的应用程序,必须先了解OpenGL的库函数。

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

OpenGL库函数的命名方式非常有规律。

所有OpenGL函数采用了以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>库前缀有gl、glu、aux、glut、wgl、glx、agl等等,分别表示该函数属于OpenGL那个开发库,从函数名后面中还可以看出需要多少个参数以及参数的类型。

I代表int型,f代表float型,d代表double型,u代表无符号整型。

例如glVertex3fv()表示了该函数属于gl 库,参数是三个float型参数指针。

我们用glVertex*()来表示这一类函数。

OpenGL函数库相关的API有核心库(gl)、实用库(glu)、辅助库(aux)、实用工具库(glut)、窗口库(glx、agl、wgl)和扩展函数库等。

从图可以看出,gl是核心,glu是对gl的部分封装。

glx、agl、wgl 是针对不同窗口系统的函数。

glut是为跨平台的OpenGL程序的工具包,比aux功能强大。

扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

下面逐一对这些库进行详细介绍。

1.OpenGL核心库核心库包含有115个函数,函数名的前缀为gl。

这部分函数用于常规的、核心的图形处理。

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

由于许多函数可以接收不同数以下几类。

据类型的参数,因此派生出来的函数原形多达300多个。

核心库中的函数主要可以分为以下几类函数:•绘制基本几何图元的函数:glBegain()、glEnd()、glNormal*()、glVertex*();•矩阵操作、几何变换和投影变换的函数:如矩阵入栈函数glPushMatrix(),矩阵出栈函数glPopMatrix(),装载矩阵函数glLoadMatrix(),矩阵相乘函数glMultMatrix(),当前矩阵函数glMatrixMode()和矩阵标准化函数glLoadIdentity(),几何变换函数glTranslate*()、glRotate*()和glScale*(),投影变换函数glOrtho()、glFrustum()和视口变换函数glViewport();•颜色、光照和材质的函数:如设置颜色模式函数glColor*()、glIndex*(),设置光照效果的函数glLight*() 、glLightModel*()和设置材质效果函数glMaterial();•显示列表函数:主要有创建、结束、生成、删除和调用显示列表的函数glNewList()、glEndList()、glGenLists()、glCallList()和glDeleteLists();•纹理映射函数:主要有一维纹理函数glTexImage1D()、二维纹理函数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glT exEnv*()和glTetCoord*();•特殊效果函数:融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*();•光栅化、象素操作函数:如象素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel();•选择与反馈函数:主要有渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer();•曲线与曲面的绘制函数:生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*();•状态设置与查询函数:glGet*()、glEnable()、glGetError()。

OPENGL与MFC的接口

OPENGL与MFC的接口

OPenGL与MFC的接口2009-12-0723:23一、概述OPenGL是一个与硬件和窗口系统无关的图形库,在其标准库里提供了核心的3-D图形指令,包括物体形状的描述、矩阵转换、光照、颜色、纹理、剪裁、位图等的处理函数。

常见的材料比如红宝书里边为了使得讨论集中于图形学的概念,因而使用了辅助库glut处理与操作系统的交互(比如创建窗口、键盘消息、客户区重绘)。

这样做使得读者可以将注意力集中于图形学的概念、原理理解以及OpenGL模型学习,同时也隐藏了OpenGL与窗口系统的接口部分。

当需要开发一个有用的应用程序的时候,glut中简化了的窗口系统难以胜任。

另一方面专业的窗口系统则专注于窗口与操作系统以及用户的交互。

因而将二者的长处结和起来的应用程序结构式比较合理的,比如使用MS windows 窗口系统处理界面工作,使用OpenGL处理图形渲染工作。

本文假设读者具有MFC的基本知识。

二、OpenGL指令的通道——渲染环境事实证明处理复杂任务时采用分治与抽象的策略是科学的选择。

把任务的划分为功能明确、相互关联的子任务,当各个子任务完成的时候总的任务就随之解决。

这里功能明确意味着各个子任务的功能并集组成了整体的任务;相互关联意味着子任务之间需要一定的接口来进行信息传输。

一般而言,子模块定义了信息的处理,而接口定义了信息的流动。

这样站在功能模块内部来看,其他部分只剩下一个抽象的接口。

设置好OpenGL跟MFC的接口以后,程序员就可以专注于图形的绘制,而将窗口维护以及用户交互的任务留给MFC来做。

具体地说是渲染环境和设备环境起到了这个作用。

三、具体操作例子用一个多视图的MFC程序为例来演示如何进行环境的搭建。

(1)创建一个多视图的MFC应用程序框架。

比如命名为MFC_OpenGL_exp。

则正确创建以后,程序具有6个类分别是:CAboutDlg,CChildFrame,CMainFrame,CMFC_OpenGL_expApp,CMFC_OpenGL_expDoc,CMFC_OpenGL_View,运行结果如下图所示:图一。

OpenGL

OpenGL

概述OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。

OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

高性能图形算法行业标准OpenGL™ 是行业领域中最为广泛接纳的2D/3D 图形API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。

OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。

在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

DirectX,(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。

由C++编程语言实现,遵循COM。

被广泛使用于Microsoft Windows、Microsoft Xbox 和Microsoft Xbox 360电子游戏开发,并且只能支持这些平台。

最新版本为DirectX 11,创建在最新的Windows 7上。

DirectX是一种应用程序接口(API),它可以让windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。

从字面意义上说,Direct就是直接的意思,而后边的X则代表了很多的意思,从这一点上我们就可以看出DirectX的出现就是为了为众多软件提供直接服务的。

注:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

opengl使用手册 简书

opengl使用手册 简书

opengl使用手册简书【实用版】目录一、OpenGL 简介二、OpenGL 函数库1.核心函数库2.矩阵操作、几何变换和投影变换函数3.扩展库 GLEW三、OpenGL 菜单的使用1.交互式输入设备的处理2.glut 命令与鼠标函数四、总结正文一、OpenGL 简介OpenGL(Open Graphics Library)是一个跨平台的图形编程接口,用于渲染 2D 和 3D 图形。

它被广泛应用于游戏开发、计算机辅助设计、虚拟现实等领域。

OpenGL 提供了丰富的函数库,可以实现各种复杂的图形效果。

二、OpenGL 函数库OpenGL 的函数库主要可以分为核心函数库和扩展库。

核心函数库包含了基本的绘图功能,如绘制几何图元、矩阵操作、几何变换和投影变换等。

扩展库 GLEW(GLEW Extension Wrangler Library)则提供了更多的高级功能,如阴影、纹理贴图等。

1.核心函数库核心函数库包含了许多常用的绘图函数,如:- glBegin():开始绘制- glEnd():结束绘制- glVertex():绘制一个顶点- glColor():设置颜色2.矩阵操作、几何变换和投影变换函数OpenGL 提供了丰富的矩阵操作、几何变换和投影变换函数,如:- glPushMatrix():矩阵入栈- glPopMatrix():矩阵出栈- glTranslate():几何变换(平移)- glRotate():几何变换(旋转)- glScale():几何变换(缩放)- gluPerspective():投影变换3.扩展库 GLEWGLEW 是一个方便的扩展库,可以方便地管理 OpenGL 扩展。

它提供了一系列的函数,如:- glewInit():初始化 GLEW- glewGetError():获取 GLEW 错误- glewCreateContext():创建 OpenGL 上下文- glewMakeCurrent():设置当前 OpenGL 上下文三、OpenGL 菜单的使用OpenGL 支持交互式输入设备,如鼠标和键盘。

opengl详解

opengl详解

[OPENGL怎么用]OPENGL编程类似C编程,实际接口就是C,所以熟悉C是必要的一般编程可用到的函数库包括:OPENGL实用库:函数以glu开头OPENGL辅助库:函数以aux开头Windows专用函数库:函数以wgl开头Win32API:无专用前缀OPENGL中有115个核心函数,可以在任何OPENGL平台上使用OPENGL实用库比上面这115个函数高一级,提供高级调用OPENGL辅助库本来是提供初学者入门的函数,不保证在任何平台的使用但恰好可以在WIN32下使用,所以本讲座将大量引用WIN32下OPENGL编程有两个方便途径:1使用辅助库2使用C++基于消息驱动的编程显然1要简单一些,入门从这里开始吧。

[用之前的准备]1首先你需要下列*.lib包含在你的工程中:opengl32.lib glu32.lib glaux.lib本讲座所有例子“将”在VC5下调试通过,所以从project->setting->link->general->object/libary modules中加入上面三个*.lib(这些LIB,VC4以上版本已经自带,加入即可,不用在四处搜寻文件)2另外在你的运行程序路径下或\win95\system\下你需要一些*.dll动态连接库opengl32.dll glu32.dll rxddi.dll mga.drv第一讲[编程入门]这里我将给出一个小例子让大家熟悉用辅助库的编程结构:// GLOS.H//////////////////////////////////////////////////////////// This is an OS specific header file//判别操作系统的基本头文件#include <windows.h>// disable data conversion warnings#pragma warning(disable : 4244) // MIPS#pragma warning(disable : 4136) // X86#pragma warning(disable : 4051) // ALPHA////////////////////////////////////////////////////////// //opengl.cpp//主程序#include "glos.h"#include <GL/gl.h>#include <GL/glaux.h>#include "windows.h"void main(void){/*初始化:*/auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);//窗口显示单缓存和RGB(彩色)模式auxInitPosition(0,0,500,500);//大小x=500 y=500 (0,0)是屏幕左上点auxInitWindow("sample1");//窗口初始化,参数是标题glClearColor(0.0,0.0,0.0,0.0);//将窗口清为黑色glClear(GL_COLOR_BUFFER_BIT);//将颜色缓存清为glClearColor命令所设置的颜色//即背景色/*绘图*/glColor3f(1.0,0.0,0.0);//选颜色(R,G,B),参数0<x<1,这里就是红色glRectf(-0.5,-0.5,0.5,0.5);//画个方块glFlush();//强制绘图,不驻留缓存_sleep(1000);//windows函数,显示1秒(单位是毫秒)}//end of sample根据注释,应该看出程序功能:显示红色方块(2D)一秒钟。

【计算机图形学】OpenGL补充1:OpenGL基础

【计算机图形学】OpenGL补充1:OpenGL基础
实用库中的所有函数全都是由OpenGL基本库函数来 编写的,所以,在使用上和OpenGL基本库的使用 是完全相同的,而且,用户也可以使用基本函数库 来实现实用库的函数功能。
10
OpenGL的辅助库是为了方便用户用标准C编写 OpenGL程序而编写的。OpenGL是一个图形标准, 所以,在OpenGL中没有提供窗口管理和消息事件 响应的函数,这样使用标准C 编写OpenGL程序是 很不方便的,所以提供了辅助库。其中的函数都是 以“aux”为前缀。OpenGL辅助库提供了一些基本 的窗口管理函数、事件处理函数和一些简单模型的 制作函数等,例如,定义窗口的大小、处理键盘时 间、鼠标击键事件、绘制多面体等等。
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
gl/服务器模型上的网络透明性是OpenGL 的固有特性,它允许一个运行在工作站上的进程在 本机或通过网络在远程工作站上显示图形。利用这 种性质能够均衡各工作站的工作负荷,共同承担图形 应用任务。
(4)高质量和高性能 无论是在CAD/CAM、三维动画还是可视化仿真等 领域,OpenGL高质量和高效率的图形生成能力都 能得到充分的体现。在这些领域中,开发人员可以 利用OpenGL制作出效果逼真的二、三维图像来。

❖ Windows环境下的GLUT下载地址:(大小约 为150k)
/resources/libraries/glut/glutdlls 37beta.zip

OpenGL常用API

OpenGL常用API

OpenGL常用APIglAccum 操作累加缓冲区glAddSwapHintRectWIN 定义一组被SwapBuffers拷贝的三角形glAlphaFunc允许设置alpha检测功能glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中glArrayElement 定义一个被用于顶点渲染的数组成分glBegin,glEnd 定义一个或一组原始的顶点glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理glBitmap 绘制一个位图glBlendFunc 特殊的像素算法glCallList 执行一个显示列表glCallLists 执行一列显示列表glClear 用当前值清除缓冲区GlClearAccum 为累加缓冲区指定用于清除的值glClearColor 为色彩缓冲区指定用于清除的值glClearDepth 为深度缓冲区指定用于清除的值glClearStencil 为模板缓冲区指定用于清除的值glClipPlane 定义被裁剪的一个平面几何体glColor 设置当前色彩glColorMask 允许或不允许写色彩组件帧缓冲区glColorMaterial 使一个材质色彩指向当前的色彩glColorPointer 定义一列色彩glColorTableEXT 定义目的一个调色板纹理的调色板的格式和尺寸glColorSubTableEXT 定义目的纹理的调色板的一部分被替换glCopyPixels 拷贝帧缓冲区里的像素glCopyTexImage1D 将像素从帧缓冲区拷贝到一个单空间纹理图象中glCopyTexImage2D 将像素从帧缓冲区拷贝到一个双空间纹理图象中glCopyTexSubImage1D 从帧缓冲区拷贝一个单空间纹理的子图象glCopyTexSubImage2D 从帧缓冲区拷贝一个双空间纹理的子图象glCullFace 定义前面或后面是否能被精选glDeleteLists 删除相邻一组显示列表glDeleteTextures 删除命名的纹理glDepthFunc 定义用于深度缓冲区对照的数据glDepthMask 允许或不允许写入深度缓冲区glDepthRange 定义z值从标准的设备坐标映射到窗口坐标glDrawArrays 定义渲染多个图元glDrawBuffer 定义选择哪个色彩缓冲区被绘制glDrawElements 渲染数组数据中的图元glDrawPixels 将一组像素写入帧缓冲区glEdgeFlag 定义一个边缘标志数组glEdgeFlagPointer 定义一个边缘标志数组glEnable, glDisable 打开或关闭OpenGL的特殊功能glEnableClientState,glDisableClientState 分别打开或关闭数组glEvalCoord 求解一维和二维贴图glEvalMesh1,glEvalMesh2 求解一维和二维点或线的网格glEvalPoint1,glEvalPoint2 生成及求解一个网格中的单点glFeedbackBuffer 控制反馈模式glFinish 等待直到OpenGL执行结束glFlush 在有限的时间里强制OpenGL的执行glFogf,glFogi,glFogfv,glFogiv 定义雾参数glFrontFace 定义多边形的前面和背面glFrustum 当前矩阵乘上透视矩阵glGenLists 生成一组空的连续的显示列表glGenTextures 生成纹理名称glGetBooleanv,glGetDoublev,glGetFloatv,glGetIntegerv 返回值或所选参数值glGetClipPlane 返回特定裁减面的系数glGetColorTableEXT 从当前目标纹理调色板得到颜色表数据glGetColorTableParameterfvEXT,glGetColorTableParameterivEXT从颜色表中得到调色板参数glGetError 返回错误消息glGetLightfv,glGetLightiv 返回光源参数值glGetMapdv,glGetMapfv,glGetMapiv 返回求值程序参数glGetMaterialfv,glGetMaterialiv 返回材质参数glGetPixelMapfv,glGetpixelMapuiv,glGetpixelMapusv 返回特定的像素图glGetPointerv 返回顶点数据数组的地址glGetPolygonStipple 返回多边形的点图案glGetString 返回描述当前OpenGl连接的字符串glGetTexEnvfv 返回纹理环境参数glGetTexGendv,glGetTexGenfv,glGetTexGeniv 返回纹理坐标生成参数glGetTexImage 返回一个纹理图象glGetTexLevelParameterfv,glGetTexLevelParameteriv 返回特定的纹理参数的细节级别glGetTexParameterfv,glGetTexParameteriv 返回纹理参数值glHint 定义实现特殊的线索glIndex 建立当前的色彩索引glIndexMask 控制写色彩索引缓冲区里的单独位GlIndexPointer 定义一个颜色索引数组glInitName 初始化名字堆栈glInterleavedArrays 同时定义和允许几个在一个大的数组集合里的交替数组glIsEnabled 定义性能是否被允许glIsList 检测显示列表的存在glIsTexture 确定一个名字对应一个纹理glLightf,glLighti,glLightfv,glLightiv 设置光源参数glLightModelf,glLightModeli,glLightModelfv,glLightModeliv 设置光线模型参数glLineStipple 设定线点绘图案glLineWidth 设定光栅线段的宽glListBase 为glcallList设定显示列表的基础glLoadIdentity 用恒等矩阵替换当前矩阵glLoadMatrixd,glLoadMatrif 用一个任意矩阵替换当前矩阵glLoadName 将一个名字调入名字堆栈glLogicOp 为色彩索引渲染定义一个逻辑像素操作glMap1d,glMap1f 定义一个一维求值程序glMap2d,glMap2f 定义一个二维求值程序glMapGrid1d,glMapGrid1f,glMapgrid2d,glMapGrid2f 定义一个一维或二维网格glMaterialf,glMateriali,glMateriafv,glMaterialiv 为光照模型定义材质参数glMatrixMode 定义哪一个矩阵是当前矩阵glMultMatrixd,glMultMatrixf 用当前矩阵与任意矩阵相乘glNewList,glEndList 创建或替换一个显示列表glNormal 设定当前顶点法向glNormalPointer 设定一个法向数组glOrtho 用垂直矩阵与当前矩阵相乘glPassThrough 在反馈缓冲区做记号glPixelMapfv,glPixelMapuiv,glPixelMapusv 设定像素交换图glPixelStoref,glpixelStorei 设定像素存储模式glPixelTransferf,glPixelTransferi 设定像素存储模式glPixelZoom 设定像素缩放因数glPointSize 设定光栅点的直径glPolygonMode 选择一个多边形的光栅模式glPolygonOffset 设定OpenGL用于计算深度值的比例和单元glPolygonStipple 设定多边形填充图案glPrioritizeTextures 设定纹理固定的优先级glPushAttrib,glPopAttrib 属性堆栈的压入和弹出操作glPushClientAttrib,glPopClientAttrib 在客户属性堆栈存储和恢复客户状态值glPushmatrix,glPopMatrix 矩阵堆栈的压入和弹出操作glPushName,glPopName 名字堆栈的压入和弹出操作glRasterPos 定义像素操作的光栅位置glreadBuffer 为像素选择一个源色彩缓冲区glReadPixels 从帧缓冲区读取一组数据glRectd,glRectf,glRecti,glRects,glRectdv,glRectfv,glRectiv,glR ectsv 绘制一个三角形glRenderMode定义光栅模式glRotated,glRotatef 将旋转矩阵与当前矩阵相乘glScaled,glScalef 将一般的比例矩阵与当前矩阵相乘glScissor 定义裁减框glSelectBuffer 为选择模式值建立一个缓冲区glShadeModel 选择平直或平滑着色glStencilFunc 为模板测试设置功能和参照值glStencilMask 控制在模板面写单独的位glStencilOp 设置激活模式测试glTexCoord 设置当前纹理坐标glTexCoordPointer 定义一个纹理坐标数组glTexEnvf,glTexEnvi,glTexEnvfv,glTexEnviv 设定纹理坐标环境参数glTexGend,glTexgenf,glTexGendv,glTexGenfv,glTexGeniv 控制纹理坐标的生成glTexImage1D 定义一个一维的纹理图象glTexImage2D 定义一个二维的纹理图glTexParameterf,glTexParameteri,glTexParameterfv,glTexPara meteriv 设置纹理参数glTexSubImage1D 定义一个存在的一维纹理图像的一部分,但不能定义新的纹理glT exSubImage2D 定义一个存在的二维纹理图像的一部分,但不能定义新的纹理glTranslated,glTranslatef 将变换矩阵与当前矩阵相乘glVertex 定义一个顶点glVertexPointer 设定一个顶点数据数组glViewport 设置视窗[OpenGL应用函数库]gluBeginCurve,gluEndCurve 定义一条不一至的有理的NURBS 曲线gluBeginPolygon,gluEndPolygon 定义一个非凸多边形gluBeginSurface,gluEndSurface 定义一个NURBS曲线gluBeginTrim,gluEndTrim 定义一个NURBS整理循环gluBuild1Dmipmaps 建立一维多重映射gluBuild2Dmipmaps 建立二维多重映射gluCylinder 绘制一个圆柱gluDeleteNurbsRenderer 删除一个NURBS对象gluDeleQuadric 删除一个二次曲面对象gluDeleteTess 删除一个镶嵌对象gluDisk 绘制一个盘子gluErrorString 根据OpenGL或GLU错误代码产生错误字符串gluGetNutbsProperty 得到一个NURBS属性gluGetString 得到一个描述GLU版本号或支持GLU扩展调用的字符串gluGetTessProperty 得到一个镶嵌对象gluLoadSamplingMatrices 加载NUMRBS例子和精选矩阵gluLookAt 设定一个变换视点gluNewNurbsRenderer 创建一个NURBS对象gluNewQuadric 建立一个二次曲面对象gluNewTess 建立一个镶嵌对象gluNextContour 为其他轮廓的开始做标记gluNurbsCallback 为NURBS对象设定一个回调gluNnrbsCurve 设定一个NuRBS曲线的形状gluNurbsProperty 设定一个NURBS属性gluNurbsSurface 定义一个NURBS表面的形状gluOrtho2D 定义一个二位正交投影矩阵gluPartialDisk 绘制一个盘子的弧gluPerspective 设置一个透视投影矩阵gluPickMatrix 定义一个拾取区间gluProject 将对象坐标映射为窗口坐标gluPwlCurve 描述一个分段线性NURBS修剪曲线gluQuadricCallback 为二次曲面对象定义一个回调gluQuadricDrawStyle. 为二次曲面设定合适的绘制风格gluQuadricNormals 定义二次曲面所用的法向的种类gluQuadricOrientation 定义二次曲面内部或外部方向gluQuadricT exture 定义是否带二次其面做纹理帖图gluScaleImage 将图象变换为任意尺寸gluSphere 绘制一个球体gluTessBeginContour,gluTessEndContour 划定一个边界描述gluTessBeginPolygon,gluTessEndPolygon 划定一个多边形描述gluTessCallback 为镶嵌对象定义一个回调gluTessNormal 为一个多边行形定义法向gluTessProperty 设置镶嵌对象的属性gluTessVertex 定义在一个多边形上的顶点gluUnProject 将窗口坐标映射为对象坐标。

OpenGL支持库及向导使用教程

OpenGL支持库及向导使用教程

OpenGL支持库及向导使用教程关键词:OpenGL、支持库、向导、3D、图形、编程前言当前OpenGL的应用已经相当广泛了,在各种操作系统上都能看到它在发挥作用。

使用Basic,C,C++、Pascal,Java等语言也都能进行OpenGL编程。

为了能让更多的易语言的爱好者能熟练地使用OpenGL支持库及向导,特编写了本教程。

本教程为易语言的OpenGL支持库及向导的使用教程,是一篇面向OpenGL初学者的基础教程。

希望能为广大的初学者提供一种学习的方向和捷径。

在第二章里具体介绍了支持库中涉及到的各种命令和OpenGL的使用的经验。

教程内没有过多地涉及OpenGL内部结构和运行机制,可能不适合使用其他编程语言的用户和OpenGL的高级用户。

由于作者水平有限,教程中难免有不妥甚至错误之处,希望读者不吝指正。

编者2013年5月目录第一章、OPENGL支持库的基本介绍1第二章、OPENGL的应用2第一节、建立使用O PEN GL的组件2第二节、空间定位7第三节、基础建模9第四节、绚丽的颜色11第五节、显示列表14第六节、光照、材质16第七节、光栅位图20第八节、纹理贴图23第九节、矩阵变换27第十节、混合效果31第十一节、雾化效果35第十二节、裁剪操作36第十三节、文本操作38第十四节、缓存40第三章、使用OPENGL向导44第四章、附录47第一章、OpenGL支持库的基本介绍OPenGL是“图形硬件和软件接口”。

它并不是什么编程语言,而是一组API函数,你可以使用其中的一些函数来处理图形。

OPenGL包含了从2D到3D的各种图形、图像的功能,因此它的应用非常广泛了。

常见的就有游戏的制作、电影的特效、图像处理、医疗仪器的显示、机械的模拟等等。

可能你的电脑中就有这样的一些应用软件。

通常大家的系统已经集成了OpenGL,不再需要复杂地安装。

而且硬件厂商都会提供相应的显卡驱动。

如果出现OPenGL不能显示的状况,你应该考虑升级一下显卡的驱动程序,然后看看系统是否需要更新一下,那些API的版本是否已经过时了,当然还有可能是软件的故障。

OpenGL应用编程接口文档

OpenGL应用编程接口文档

OpenGL应⽤编程接⼝⽂档OpenGL1 OpenGL 特点1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多⾯体、茶壶等)以及复杂曲线和曲⾯绘制函数。

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

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

其变换⽅法有利于减少算法的运⾏时间,提⾼三维图形的显⽰速度。

3.颜⾊模式设置:OpenGL颜⾊模式有两种,即RGBA模式和颜⾊索引(Color Inde x)。

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

材质是⽤光反射率来表⽰。

场景(Scene)中物体最终反映到⼈眼的颜⾊是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜⾊。

5.纹理映射(Texture Mapping)。

利⽤OpenGL纹理映射功能可以⼗分逼真地表达物体表⾯细节。

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

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

7.双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简⾔之,后台缓存计算场景、⽣成画⾯,前台缓存显⽰后台缓存已画好的画⾯。

此外,利⽤OpenGL还能实现深度暗⽰(Depth Cue)、运动模糊(Motion Blur)等特殊效果。

从⽽实现了消隐算法。

2 OpenGL ⼯作机制如何在OpenGL中表⽰3D物体OpenGL 的渲染流⽔线OpenGL中函数的命名规则2.1 OpenGL中3D物体的表⽰在3D空间中,场景是物体或模型的集合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OPenGL ES常用API:
glClearColor( 0.f, 0.f, 0.f, 1.f ); // 设置模式窗口的背景颜色,颜色采用的是RGBA值
glViewport( 0, 0, iScreenWidth, iScreenHeight );//设置视口的大小以及位置,
视口:也就是图形最终显示到屏幕的区域,前两个参数是视口的位置,后两个参数是视口的宽和长。

glMatrixMode( GL_PROJECTION ); // 设置矩阵模式为投影矩阵,之后的变换将影响投影矩阵。

OpenGL属于状态管理机制,比如:设置当前矩阵为投影矩阵过后,在没有重新调用glMatrixMode()之前,任何矩阵变换都将影响投影矩阵。

glFrustumf( -1.f, 1.f, -1.f, 1.f, 3.f, 1000.f ); //该函数创建一个透视投影矩阵,其中的参数定义了视景体,可以理解为用相机的时候,眼睛的可视范围。

就像一个三棱锥,参数1、3、5
和2、4、6分别定义了近裁面和远裁面的左下和右上的(x、y、z)坐标。

OpenGL 投影有两种模式,一种是透视投影,也就是通过上述函数创建一个三棱锥视景体,这种模式下观看三维模型是近大远小。

另外一种模式是正交模式,视景体是一个平行六面体,离相机的距离不会影响物体的大小。

glMatrixMode( GL_MODELVIEW ); //设置当前矩阵为模式矩阵
glVertexpointer( 3, GL_BYTE, 0, vertices ); //指定从哪里存取空间坐标数据
OpenGL 一共有8个这样的函数可以存取不同的坐标数据:
glColorPointer();
glIndexPointer();
glNormalPointer();
glTexCoordPointer();等
glShadeModel( GL_FLAT ); //设置阴影模式为GL_FLAT,默认是GL_SMOOTH
阴影模式一共有两种,GL_SMOOTH和GL_FLAT,在有关照的情况下会有不同的效果。

glClear( GL_COLOR_BUFFER_BIT ); //清除颜色缓存
glLoadIdentity(); //设置当前矩阵为单位矩阵
OpenGL里面的位置大小都是用矩阵来表示的,比如:glScanf()放大或缩小,其实就是用一个矩阵去乘当前的矩阵,为了使变换不受当前矩阵的影响,所以把当前矩阵设置为单位矩阵。

glTranslatex(0, 0, -100 << 16 ); //将坐标向z轴负方向移动100
glColor4f( 1.f, 0.f, 0.f, 1.f ); 设置颜色为红色
glScalex( 15 << 16, 15 << 16, 15 << 16 ); // 将物体沿xyz者分别放大15倍
glDrawElements( GL_TRIANGLES, 1 * 3, GL_UNSIGNED_BYTE, indices ); //绘制图形,GL_TRIANGLES说明要绘制的图形是三角形,3表示一共有三个定点,
GL_UNSIGNED_BYTE表示indices存储的数据类型
void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
void glTranslatex(GLfixed x, GLfixed y, GLfixed z)
功能:沿x、y、z平移
void glScalef(GLfloat x, GLfloat y, GLfloat z)void glScalex(GLfixed x, GLfixed y, GLfixed z) 功能:在x、y、z轴进行缩放,参数x、y、z为你想要的大小。

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
功能:沿x、y、z轴进行旋转。

Angle表示将要旋转的角度。

void glClear(GLbitfield mask)
功能:用mask清除缓存可以有三种模式进行清除:GL_COLOR_BUFFER_BIT,
GL_DEPTH_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT.
void glClearDepthf(GLclampf depth)void glClearDepthx(GLclampx depth)
功能:设置深度缓存,参数为0到1,使用glClear清除缓存。

3D场景OpenGL程序都使用深度缓存。

它的排序决定那个物体先画。

这样您就不会将一个圆形后面的正方形画到圆形上来。

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) void glClearColorx(GLclampx red, GLclampx green, GLclampx
blue,GLclampx alpha)
功能:用指定的颜色值(RGBA)清除颜色缓存
void glColorPointer(GLint size, GLenum type, GLsizei stride,const GLvoid * pointer) 功能:指定颜色的存储空间,size在OpenGL ES默认为4,表示(RGBA);type为pointer 内容的类型;stride为数据在pointer内存中的偏移量;pointer为第一个元素的地址。

void glEnableClientState(GLenum array)void glDisableClientState(GLenum array)
功能:启用或者禁止array,array有:GL_COLOR_ARRAY,
GL_MATRIX_INDEX_ARRAY_OES, GL_NORMAL_ARRAY,
GL_POINT_SIZE_ARRAY_ARRAY_OES, GL_TEXTURE_COORD_ARRAY,
GL_VERTEX_ARRAY, and GL_WEIGHT_ARRAY_OES。

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
功能:按照参数给定的值绘制图形,mode指定要绘制的类型:GL_POINTS,
GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP,
GL_TRIANGLE_FAN, and GL_TRIANGLES;count指定要绘制多少个;type指定indices 为数组首地址。

相关文档
最新文档