Android OpenglES教程(1)

来源:互联网 发布:关于程序员的纪录片 编辑:程序博客网 时间:2024/04/29 19:48

Android OpenglES教程(1)

这是我写的Android游戏开发笔记的第一篇,这一篇和接下来的几篇都是翻译自国外一位高手写的教程,但是他没有留下名字,在此先感谢一下。好,开始。

我准备写一系列在Android移动平台上的OpenglES教程,因为opengles的理论在大多数硬件平台上都是一样的,所以他们的相互转换也是很容易的。

我不是很牛,我不敢保证我得教程里每个地方都是对的,所以如果你发现了错误或者困扰,请在我得blog上留言。

ok,我们开始!


在第一课里,我将会教你如何建立一个Android上的OpenglES视窗,这样的开始再合适不过了。

建立openglES视窗

如果你了解opengl的话就会知道,建立一个opengl视窗并不是很难,在Android平台上,他也一样简单,事实上,你只需要做两件事情:

GLSurfaceView

GLSurfaceView是Android提供给你的API类,他可以帮助你写opengles的程序,他的具体功能如下:

  • 提供opengles代码到显示系统的连接
  • 使opengles的代码可以在Activity的生命周期中运行
  • Making it easy to choose an appropriate frame buffer pixel format.(不太懂的我就直接贴上来了)
  • 创建管理一个渲染的线程使之得到更好的效果
  • 使opengl的调试更加方便

概念讲完了,接下来步入最重要的部分。

其实只有一个方法需要你调用:

public void setRenderer(GLSurfaceView.Renderer renderer);


如果想知道更多的话,可以查找Android的API:GLSurfaceView。

GLSurfaceView.Renderer

 

GLSurfaceView.Renderer 是一个通用渲染接口,你需要把你想要调用的函数都放在这个渲染器里,来渲染你的画面.
有三个方法你需要知道:
// 当你的surface被创建时,他会被调用
public void onSurfaceCreated(GL10 gl, EGLConfig config);  
// 调用这个函数在你的窗口上绘图 
public void onDrawFrame(GL10 gl) ;
// 当窗口改变大小时会被调用
public void onSurfaceChanged(GL10 gl, int width, int height);
onSurfaceCreated
在这里放一些在绘图循环中不是经常要改变的东西,比如你要清屏的颜色,开启一些opengl的功能等等。
onDrawFrame
这是绘图真正发生的地方
onSurfaceChanged
如果你的设备支持横屏和竖屏的转换的话,当转换发生时,这个函数就会被调用,他会改变你的画面的长宽比例
如果想知道更多的话,可以查找Android的API:GLSurfaceView.Renderer

 

 


程序实例


我们将创建一个activity,他会很简单.

 

 

渲染这部分会稍微麻烦一点

 

全屏模式

添加下面的代码,你的程序就可以全屏了

 

 

 

接下来就需要你运行这个程序了,我们这个程序比较简单,你只会看到一个黑屏。

 

END

原创粉丝点击