Android OpenGL初体验
来源:互联网 发布:编程pmc 编辑:程序博客网 时间:2024/06/05 15:37
Android OpenGL初体验
首先申明下,本文为笔者学习《OpenGL ES应用开发实践指南》的笔记,并加入笔者自己的理解和归纳总结。
1、创建OpenGL应用
public class OpenGLHelloWorldActivity extends Activity {private GLSurfaceView mSurfaceView;private boolean mRender = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mSurfaceView = new GLSurfaceView(this);setContentView(mSurfaceView);}}
2、生命周期
在onResume和onPause中加入GLSurfaceView的资源启用和释放,mRender控制是否开始渲染。@Overrideprotected void onResume() {super.onResume();if (mRender) {mSurfaceView.onResume();}}@Overrideprotected void onPause() {super.onPause();if (mRender) {mSurfaceView.onPause();}}
3、系统支持
判断系统是否支持OpenGL ES 2.0ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);ConfigurationInfo confInfo = am.getDeviceConfigurationInfo();boolean supportEs2 = confInfo.reqGlEsVersion >= 0x20000;if (supportEs2) {// 选择OpenGL ES 2.0mSurfaceView.setEGLContextClientVersion(2);// 设置渲染mSurfaceView.setRenderer(new OpenGLHelloWorldRender());mRender = true;} else {Toast.makeText(this , "This device does not support OpenGL ES 2.0",Toast.LENGTH_LONG).show();}
4、自定义渲染类OpenGLHelloWorldRender
Render中定义了三个方法- onSurfaceCreated:当SurfaceView被创建时,GLSurfaceView会调用此方法。
- onSurfaceChanged:当SurfaceView被创建后,每次Surface尺寸变化时,这个方法都会被调用
- onDrawFrame:当绘制一帧时,这个方法会被GLSurfaceView调用
private class OpenGLHelloWorldRender implements GLSurfaceView.Renderer {@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 清空屏幕颜色,参数对应红色、绿色、蓝色和透明度// 显示为红色GLES20.glClearColor(1, 0, 0, 0);//gl.glClearColor(1, 0, 0, 0);}@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {// 设置视图尺寸GLES20.glViewport(0, 0, width, height);//gl.glViewport(0, 0, width, height);}@Overridepublic void onDrawFrame(GL10 gl) {// 清空屏幕GLES20.glClear(GL10.GL_COLOR_BUFFER_BIT);//gl.glClear(GL10.GL_COLOR_BUFFER_BIT);}}
显示如下
阅读全文
0 0
- Android OPenGL 初体验
- Android OpenGL初体验
- [OpenGL ES 01]OpenGL ES之初体验
- OpenGL ES 01]OpenGL ES之初体验
- [OpenGL ES 01]iOS上OpenGL ES之初体验
- [OpenGL ES 01]OpenGL ES之初体验
- [OpenGL ES 01]OpenGL ES之初体验
- [OpenGL ES 01]OpenGL ES之初体验
- [OpenGL ES 01]OpenGL ES之初体验
- 体验OpenGL新版本
- Android初体验
- android初体验
- Android初体验
- Android 之初体验
- android-Handler 初体验
- Android开发初体验
- [gkk]android初体验
- Android Stuido 初体验
- STL中的find,find_if函数(对类、容器(vector、list)进行查找)
- JS截取字符串常用方法详细整理
- JQuery的ajax()的data的参数类型
- 变量名的一些规则
- Windows Jpype安装
- Android OpenGL初体验
- 根据年和月,取月份的最后一天和月份的第一天
- C++创建文件夹
- 解析Win7系统中什么是wmi控件及它的功能作用
- Vue2.0仿今日头条
- Birthday Paradox LightOJ
- struct和typedef struct的区别
- 110_容器_Set_HashSet基本用法_源码分析
- C# TCP 自己看,别人看了没有用