OpenGL应用编程接口文档
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的常用接口-2016-10-13

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,在有关照的情况下会有不同的效果。
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的整数次幂。在使用索引颜色方式进 行绘图时,总是先设置颜色表,然后选择 颜色。
第2章 OPENGL编程

(1)点(Point) 用二维坐标(x,y)定义的点在OpenGL中默认z 值为0。顶点坐标也可以用齐次坐标(x,y,z,w)来表 示,如果w不为0.0,这些齐次坐标表示的顶点即 为三维空间点(x/w,y/w,z/w),一般来说,w缺省为 1.0。 可以用glVertex{234}{sifd}[V](TYPE cords) 函数来定义一个顶点。例如: glVertex2f(2.0f,3.0f);//二维坐标定义顶点; OpenGL中定义的点可以有不同的尺寸,其 函数形式为: void glPointSize(GLfloat size); 参数size设置点的宽度(以象素为单位),必 须大于0.0,缺省时为1.0。
(5)在CEx_OpenGLView类的头文件 Ex_OpenGLView.h的开始处添加OpenGL库的 包含文件 #include "gl\gl.h" #include "gl\glu.h" #include "gl\glaux.h" #pragma comment (lib,"Opengl32.lib") #pragma comment (lib,"Glu32.lib") #pragma comment (lib,"Glaux.lib")
在MFC中使用这些图形库的函数时,还必须在源文 件的开头处加入相应的包含文件,以及编译时 加入相应的库或在程序中加入,如下列语句:
#include "gl\gl.h"
#include "gl\glu.h" #include "gl\glaux.h"
#pragma comment (lib,"Opengl32.lib")
OpenGL 中文API

数glTexImage2D()、设置纹理参数、纹理环境和纹理坐标的函数glTexParameter*()、glTexEnv*()和glTetCoord*();特殊效果函数:融合函数glBlendFunc()、反走样函数glHint()和雾化效果glFog*();光栅化、象素操作函数:如象素位置glRasterPos*()、线型宽度glLineWidth()、多边形绘制模式glPolygonMode(),读取象素glReadPixel()、复制象素glCopyPixel();选择与反馈函数:主要有渲染模式glRenderMode()、选择缓冲区glSelectBuffer()和反馈缓冲区glFeedbackBuffer();曲线与曲面的绘制函数:生成曲线或曲面的函数glMap*()、glMapGrid*(),求值器的函数glEvalCoord*() glEvalMesh*();状态设置与查询函数:glGet*()、glEnable()、glGetError()。
2.OpenGL实用库The OpenGL Utility Library (GLU) 包含有43个函数,函数名的前缀为glu。
OpenGL提供了强大的但是为数不多的绘图命令,所有较复杂的绘图都必须从点、线、面开始。
Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。
此函数由glu.dll来负责解释执行。
OpenGL中的核心库和实用库可以在所有的OpenGL平台上运行。
主要包括了以下几种:辅助纹理贴图函数:gluScaleImage() 、gluBuild1Dmipmaps()、gluBuild2Dmipmaps();坐标转换和投影变换函数:定义投影方式函数gluPerspective()、gluOrtho2D() 、gluLookAt(),拾取投影视景体函数gluPickMatrix(),投影矩阵计算gluProject()和gluUnProject();多边形镶嵌工具:gluNewTess()、gluDeleteTess()、gluTessCallback()、gluBeginPolygon()、gluTessVertex()、gluNextContour()、gluEndPolygon();二次曲面绘制工具,主要有绘制球面、锥面、柱面、圆环面gluNewQuadric()、gluSphere()、gluCylinder()、gluDisk()、gluPartialDisk()、gluDeleteQuadric();非均匀有理B样条绘制工具:主要用来定义和绘制Nurbs曲线和曲面,包括gluNewNurbsRenderer()、gluNurbsCurve()、gluBeginSurface()、gluEndSurface()、gluBeginCurve()、gluNurbsProperty();错误反馈工具:获取出错信息的字符串gluErrorString()。
OpenGL编程基础(二)

OpenGL编程基础
显示点、直线和多边形: 三、多边形的细节 2. 设置点画多边形的函数: glPolygonStipple() 句法:void glPolygonStipple(const GLubyte *mask); 描述:定义填充多边形的当前点画模式。Mask参数是一 个指向32x32位图的指针,后者被解释为0和1的掩码。如果 模式中出现的是1,则多边形对应的像素就被绘制,如果模
OpenGL编程基础
显示点、直线和多边形: 二、直线的细节 直线的细节包括直线的宽度和不同点画模式的直线。 1. 设置直线的宽度函数: glLineWidth() 句法:void glLineWidth(GL float Width); 描述:设置被渲染直线的粗细,以像素为单位。Width必 须大于0.0,默认值为1.0 。在未使用反走样功能时,直线的
OpenGL编程基础
OpenGL基础函数
OpenGL图元绘制
OpenGL编程基础
显示点、直线和多边形: 一、点的细节 点的基本大小对应屏幕上的1个像素。使用glPointSize()函 数可设置被渲染点的大小。 句法:void glPointSize(GL float size); 描述:设置被渲染点的大小,以像素为单位。Size必须 大于0.0,默认值为1.0 。被渲染的点呈正方形方块。如果 启用了反走样或多重采样,被渲染的点呈圆形。调用函数 glEnable(),并将参数设置为GL_POINT_SMOOTH,启 用反走样。例:point
x[i ] xc r (cos(t ) t sin( t )) y[i ] yc r (sin( t ) t cos(t ))
绘制渐开线,如图所示。
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应用程序开发

GL的平台 的平台
• 基于OpenGL标准开发的应用程序运行时需有动态链接库 OpenGL32.DLL、Glu32.DLL. • VC6和里面就带有GL的基本库
VC6:…\Microsoft Visual Studio\VC98\Include\GL .2005:…\Microsoft Visual Studio 8\VC \PlatformSDK\Include\gl
OpenGL应用程序开发
1. 三维世界的成像
1.1 空间位置和坐标
y y z+
x
x x z+
笛卡尔坐标
世界坐标
1.2 透视投影
2. OpenGL简介
OpenGL(Open Graphics Library)是3D程序接 ( ) 程序接 是一个功能强大,调用方便的底层3D图形库 图形库。 口,是一个功能强大,调用方便的底层 图形库。 OpenGL是与硬件无关的软件接口,可以在不同的 是与硬件无关的软件接口, 是与硬件无关的软件接口 平台如Windows 95、Windows NT、Unix、 平台如 、 、 、 Linux、MacOS、OS/2之间进行移植。 之间进行移植。 、 、 / 之间进行移植 由近二百五十个不同的函数调用组成, 由近二百五十个不同的函数调用组成,用来从简单 的图元绘制复杂的三维景象。 的图元绘制复杂的三维景象。
OpenGL工作方式 工作方式
显示器 显示卡 OpenGL DLL)
OpenGL 内核服务
操作系统服务
OpenGL绘制过程: 绘制过程: 绘制过程 将三维数据投影到一个二维平面上, 将三维数据投影到一个二维平面上,之后处理得 到的像素,进行显示。 到的像素,进行显示。
一般是Gl.h,Glaux.h,Glu.h Lib:OpenGL32.lib,GLu32.lib,GLaux.lib • 所以在VC下可以使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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空间中,场景是物体或模型的集合。
在3D图形渲染中,所有的物体都是由三角形构成的。
这是因为一个三角形可以表示一个平面,而3D物体就是由一个或多个平面构成的。
比如下图表示了一个非常复杂的3D地形,它们也不过是由许许多多三角形表示的。
渲染后的地形面貌复杂的地形也是由三角形构成的因此,在OpenGL中,我们只要指定一个或多个三角形,就可以表示任意3D物体。
那么如何指定三角形呢?OpenGL提供三种指定三角形的方法:即单个三角形、三角条形和三角扇形。
指定单个三角形。
这是最简单,最直接的方法。
即调用特定的OpenGL函数,传入三个顶点坐标,指定一个三角形。
如下图:三角条形。
这种方式适合于同时绘制多个三角形,且这些三角形之间至少存在一条公共边。
一个三角条形是在单个三角形的基础上,再指定一个或多个顶点。
这些顶点按照次序同上一顶点一起构成一个新的三角形。
下图演示了这种推进过程。
三角扇形。
三角扇形中,所有顶点按照一个中心点成扇形排列。
如下图,是一个以V1为中心点的三角扇形。
既然使用三角形就可以表示任何图形,为什么还要使用三角条形和三角扇形呢?这是因为在OpenGL渲染流水线中,对于每个顶点都要进行变换运算。
而对于一些连接在一起的三角形组来说,使用三角条形或三角扇形就减少了顶点的数目,这意味着减少了对顶点的运算,因此提高了渲染速度。
例如,上图中第三个三角扇形,该扇形描述了4个三角形。
如果把这四个三角形都一一作为单个三角形传给OpenGL的话,我们需要3*4=12个顶点,而使用了三角扇形之后,我们只使用了6个顶点。
这节约了一半的运算量!2.2 OpenGL 的渲染流水线当我们把要绘制的三角形传给OpenGL之后,OpenGL还要做许多工作以完成3D空间到屏幕的投影。
这一系列的过程被称为OpenGL的渲染流水线。
一般地,OpenGL的渲染流程如下:2.2.1 视图变换当一个场景确定之后,如果我们想移动某个物体,或者要实现场景内的漫游,就必须进行模型视图的变换。
模型视图变换可以根据需要,移动或旋转一个或多个物体。
例如,如果我们想在3D空间中沿着Z轴向前走的话,只需要把所有物体向-Z方向移动n个单位即可。
如果我们要向左看,就应该把所有物体沿着Y轴渲染向右旋转N个角度。
下图演示了这个过程。
2.2.2 背面隐藏在一些封闭的3D物体中,朝着物体内部的面总是不可见的。
对于这些永远不可见的平面,我们可以使用背面隐藏忽略对它的绘制以提高渲染速度。
为了实现背面隐藏,我们在绘制三角形的时候必须注意三角形的绕法。
一般的,OpenGL默认为逆时针缠绕的面是正面。
如下图所示的三角形中,如果把顶点按照V1->V3->V2的顺序传给OpenGL,那么OpenGL就会认为这个三角形朝着屏幕的面是正面。
使用背面隐藏,就要求我们在把图形传给OpenGL的时候要始终遵守正面使用逆时针绕法的规定。
要开启背面隐藏的功能,只需调用函数:glEnable(GL_CULL_FACE);当然,我们也可以改变OpenGL的设置,决定是对物体的正面还是背面进行隐藏。
调用如下函数:glCullFace(GL_FRONT);来隐藏正面,也可调用glCullFace(GL_BACK);来隐藏背面。
2.2.3 光照渲染如果你开启了光照渲染,并且为每个顶点指定了它的法线,在此过程中,OpenGL将根据顶点的法线和光源的位置及性质重新计算顶点的颜色。
使用光照效果可以大大提高画面的真实性。
2.2.4 剪裁剪裁就是把那些不在视见空间,或者一半在可视空间中的物体剔除或剪裁,以保证不该出现在屏幕上的图形就不出现。
2.2.5 投影要把一个3D空间中的物体显示在屏幕上,就要进行投影。
投影又有两种方式:平行投影和透视投影。
在平行投影中,远处的物体和近处的物体是一样大的,这种投影主要运用在计算机辅助设计(CAD)上,由于这种投影没有立体感,所以一般情况下使用透视投影。
在透视投影中,远处的物体会变得较小,因此在透视投影中,可视空间是一个平头截体(或台体)。
下图表明了投影变换的原理。
2.2.6 视见空间变换当3D空间中的图形经过投影成为2D图形之后,我们还要把图形缩放到窗口或屏幕上。
这个过程被称为视见空间变换。
对于一般的游戏来说,视见空间应该是整个屏幕或窗体。
但是视见空间也可以是它的子集。
2.2.7 光栅化当2D图形的所有变换都完成之后,就要把它们栅格化以显示在屏幕上,或保存为BMP 图片。
栅格化其实是把变换得到的2D矢量图转化为位图的过程。
2.2.8 绘制在这一步中,将由Windows GDI把光栅化的图形显示在屏幕上。
2.3 OpenGL的命名规则在OpenGL1.1库中,包含了大约300多个API函数。
为了方便程序员记忆和使用,这些函数都按照一定的规则进行命名。
例如,函数glVertex用于传入顶点数据,而glVertex又有glVertex2i, glVertex3f, glVertex2f, glVertex2d,glVertex3d等变种。
它们各自有什么意义呢?在函数glVertex3i中,"gl"表示当前函数属于OpenGL库。
当然,此前缀如果是"glu",则表示是GLU库(OpenGL辅助库)。
2.4 OpenGL与特定的平台OpenGL被设计为只有输出的,所以它只提供渲染功能。
核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。
虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。
然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。
这通过下列附加API实现:* GLX - X11(包括透明的网络)* WGL - Microsoft Windows* AGL - Apple MacOS另外,GLUT库能够以可移植的方式提供基本的窗口功能。
2.5 Window NT系统中的OpenGL使用1.NT系统Windows/System32/opengl32.dll存在2.在头文件内加上:#include <GL/gl.h>#include <GL/glu.h>#include <GL/glaux.h>3.在集成环境中Project | Settings | Link | Object/library module | "opengl32.lib glu32.lib glaux.lib" | OK4.小例子(旋转的正方形)建立win32的普通工程,添入源代码如下:#include"stdafx.h"#include<stdio.h>#include<gl/gl.h>#include<gl/glu.h>#include<gl/glaux.h>static GLfloat spin = 0.0;static GLfloat cx,cy;void CALLBACK renderScene(){glClear(GL_COLOR_BUFFER_BIT); // 清除缓存glPushMatrix(); // 当前矩阵压栈glTranslated(cx,cy,0); // 移动视点glRotatef(spin, 0.0, 0.0, 1.0); // 旋转视点glColor3f(1.0, 0.0, 0.0); // 设置颜色glRectf(-25.0, -25.0, 25.0, 25.0); // 绘制矩形glPopMatrix(); // 还原当前矩阵glFlush(); // 强制命令执行auxSwapBuffers(); // 交换缓存,输出显示void CALLBACK changeSize(GLsizei w, GLsizei h){if (h == 0){h = 1;}if (w == 0){w = 1;}glViewport(0, 0, w, h); // 设置视图尺寸cx = w/2;cy = h/2;glLoadIdentity();if (w <= h){glOrtho(0.0, 250.0, 0.0, 250.0*h/w, 1.0, -1.0); // 设置投影矩阵 cx = 125.0;cy = 125.0*h/w;}else{glOrtho(0.0, 250.0*w/h, 0.0, 250.0, 1.0, -1.0); // 设置投影矩阵 cx = 125.0*w/h;cy = 125.0;}}void CALLBACK spinDisplay(){spin += 2.0;if (spin > 360.0){spin -= 360.0;}renderScene(); // 渲染输出void CALLBACK leftBtnClick(AUX_EVENTREC *event){auxIdleFunc(spinDisplay); // 左键动画}void CALLBACK rightBtnClick(AUX_EVENTREC *event){auxIdleFunc(NULL); // 右键停止动画}int _tmain(int argc, _TCHAR* argv[]){auxInitDisplayMode(AUX_SINGLE|AUX_DOUBLE); // 初始化显示模式auxInitPosition(100,100,250,250); // 初始化显示位置auxInitWindow(_T("My first OpenGL program")); // 初始输出化窗口cx = 125;cy = 125;glClearColor(0.0, 0.0, 0.0, 0.0);glShadeModel(GL_FLAT); // 明暗处理设置auxReshapeFunc(changeSize); // 设置尺寸变化处理函数auxMouseFunc(AUX_LEFTBUTTON, AUX_MOUSEDOWN, leftBtnClick); // 设置鼠标左键处理函数 auxMouseFunc(AUX_RIGHTBUTTON, AUX_MOUSEDOWN, rightBtnClick); // 设置鼠标右键处理函数 auxMainLoop(renderScene); // 进入主循环printf("Press anykey to return!");getchar();return 0;}OpenGL ES1 OpenGL 特点和桌面Windows的3D应用一样,移动设备也需要API的支持。