Android3D游戏开发系列(1)初识OpenGL

 

Android3D游戏开发系列(一)初识OpenGL

       OpenGL(Open Graphics Library)定义了一个跨编程语言、跨平台的编程接口的规格,是一个性能卓越的三维图形标准。OpenGL是一个专业的图形程序接口,是一个功能强大、调用方便的底层图形库。

      OpenGL ES是OpenGL三维图形API的子集,是专为内嵌和移动设备设计的一个2D/3D轻量图形库,针对手机、PDA和游戏主机等嵌入式设备而设计。OpenGL ES相对于OpenGL删减了一部分功能。以上是两者之间的主要区别。

首先我们来看一个实例。效果截图如下:

Android为我们提供了GLSurfaceView来更好地显示OpenGL视图,而GLSurfaceView中则包含了一个专门用于渲染3D的接口Renderer.下面我们来一步步完成整个项目。

1、  创建一个Android项目,项目名称叫OpenGL;

2、  创建一个类名叫GLRender让它实现接口Renderer,如下:

Public class GLRender implements Renderer{}

在GLRender中我们必须实现下面三个抽象方法:

Public void onDrawFrame(GL10 gl){}

Public void onSurfaceChanged(GL10 gl,int width,int height){}

Public void onSurfaceCreated(GL10 gl,EGLConfig config){}

3、  实现以上各抽象方法如下:

(1)onSurfaceCreated方法

        当窗口被创建时需要调用onSurfaceCreated方法,所以我们可以在里面对OpenGL做一些初始化工作,例如对透视进行修改、设置背景颜色、启动阴影平滑和深度测试等。在这里需要注意的是,这里颜色的取值范围都是0~1,还有就是深度缓存,几乎所有在屏幕上显示3D场景的OpenGL程序都是用了深度缓存,它的排序决定哪个物体先画。这样你就不会将一个圆形后面的正方形画到圆形上来。

   (2)onSurfaceChanged方法

        当窗口的大小发生改变时就会调用onSurfaceChanged方法,当然,不管窗口的大小是否已经改变。它在程序开始时至少运行一次,所以我们在该方法中设置OpenGL场景的大小,这里将OpenGL场景设置成为它显示时所在窗口的大小。这里需要说明一下,glFrustumf方法,前面4个参数用于确定窗口的大小,而后面两个参数分别是在场景中所能绘制深度的起点和终点(最远距离)。

  (3)onDrawFrame方法

        完成创建与修改两个方法之后,就是onDrawFrame方法了,所有的绘图操作都在该方法中进行,在绘图之前,需要将屏幕清除前面所指定的颜色、清除深度缓存并且重置场景,然后就可以进行绘图了。

在这里我们还需声明如下变量,以共程序使用:

4、最后只需要在OpenGL.java中调用GLSurfaceView类地setRenderer方法将我们自己

构建的GLRender类设置为默认的Renderer,通过setContentView方法使用Activity显示一个GLSurfaceView即可,代码如下:

5、到这里我们已经基本上完成Android平台OpenGL开发的基本框架,单击项目,执行之,就会得到以上效果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值