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
- Android OpenglES教程(1)
- 一些网站(opengles教程&Android Gradle,chrome Os)
- iphone openGLES强力教程
- OpenGLES 1.1教程(一)
- OpenGLES 1.1教程(一)
- 【OPENGLES】opengles-jni实例1
- android opengles---混合
- android opengles---混合
- Android OpenGLES 学习笔记
- Android Opengles 学习一
- android平台初始化opengles
- Android OpenglES 反锯齿
- Android OpenGLES 实现结构
- Android OpenglEs渲染yuv
- android opengles 纹理
- iphone ios opengles 学习教程
- OpenGLes学习之路(一)————opengles内部执行顺序(1)
- android开发LiveWallpaper流程(利用OpenGLES开发)
- linux,线程,结束过程详解
- 通过java枚举实现的单例jdbc连接与关闭
- linux下的第一个驱动
- Linux,socket,非阻塞,fcntl
- ln命令
- Android OpenglES教程(1)
- JAVA 线程 同步 信号量
- 在学MFC
- 在学MFC
- Java中的volatile关键字
- 在ubuntu上面安装Myeclipse 8.6 DVD版本(64位)
- 工作 。。
- 10 must-have utilities for small networks
- Fedora下VMWare tools安装问题