First_OpenGL_Project——手把手教你创建第一个安卓openGL2.0项目
来源:互联网 发布:美国eia原油库存数据公布时间 编辑:程序博客网 时间:2024/06/05 21:51
First_OpenGL_Project——手把手教你创建第一个安卓openGL2.0项目
本篇博客以代码为本,手把手教您建立第一个openGL的android项目。
新建项目
- 应用程序名称,输入:First OpenGL Project
- 最低SDK版本选择API 10:Andriod 2.3.3 (Gingerbread); 这是完全支持OpenGL ES 2.0 的最低版本号。
创建GLSurfaceView实例
现在看来没有多少代码:
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
package com.van.fanyu.firstopenglproject;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
给这个activity添加一个GLSurfaceView实例,这样就可以初始化OpenGL。
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
public class MainActivity extends AppCompatActivity { private GLSurfaceView glSurfaceView; private boolean rendererSet = false;
移除setContentView(),并初始化glSurfaceView。
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); glSurfaceView = new GLSurfaceView(this);
检查系统是否支持OpenGL2.0
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
//检查系统是否支持OpenGL2.0 final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo(); final boolean supportsEs2 = configurationInfo.reqGlEsVersion>=0x20000;
为OpenGL配置渲染表面
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { …… if (supportsEs2){ glSurfaceView.setEGLContextClientVersion(2); glSurfaceView.setRenderer(new FirstOpenGLProjectRender()); }else { Toast.makeText(this,"This device does not support OpenGL ES 2.0",Toast.LENGTH_LONG).show(); return; } setContentView(glSurfaceView);
在activity生命周期中处理glSurfaceView
以下代码比较重要,否则程序会崩溃:
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
@Override protected void onPause() { super.onPause(); if (rendererSet){ glSurfaceView.onPause(); } } @Override protected void onResume() { super.onResume(); if (rendererSet){ glSurfaceView.onResume(); } }
创建Renderer类
在同一个包里创建一个FirstOpenGLProjectRender类,用来实现Renderer接口。
/Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/FirstOpenGLProjectRender.java
package com.van.fanyu.firstopenglproject;import android.opengl.GLSurfaceView;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;import static android.opengl.GLES20.GL_COLOR_BUFFER_BIT;import static android.opengl.GLES20.glClear;import static android.opengl.GLES20.glClearColor;import static android.opengl.GLES20.glViewport;/** * Created by fanyu on 16/2/21. */public class FirstOpenGLProjectRender implements GLSurfaceView.Renderer { //类似于activity的onCreate方法 @Override public void onSurfaceCreated(GL10 glUnused, EGLConfig config) { //设置清空屏幕用的颜色 //前三个参数分别对应红色、绿色和蓝色。最后一个参数被称为alpha,用来表示透明度。 glClearColor(1.0f,0.0f,0.0f,0.0f); } //屏幕尺寸变化时调用此方法 @Override public void onSurfaceChanged(GL10 gl, int width, int height) { //设置GLSurfaceView显示出来的尺寸 glViewport(0,0,width,height); } //当绘制一帧时,这个方法会被调用。在这个方法中,一定要绘制一些东西,即使只是清空屏幕,否则会显示混乱。 @Override public void onDrawFrame(GL10 gl) { //此操作会清空屏幕所有颜色,并用之前glClearColor()所定义的颜色填充整个屏幕 glClear(GL_COLOR_BUFFER_BIT); }}
小结
本项目初始化了OpenGL、响应了Android Activity的生命周期,最后清空了屏幕。
作者信息
- 个人博客:http://blog.csdn.net/fy9987899
- github项目:https://github.com/fanyu2013/Android-Blogs
- First_OpenGL_Project——手把手教你创建第一个安卓openGL2.0项目
- 手把手教你创建第一个fusioncharts
- 手把手教你创建maven的web3.0项目
- 手把手教你创建第一个IOS应用
- 手把手教你在eclipse中创建Web项目!!!
- 手把手教你appium_android第一个示例
- 手把手教你appium_ios第一个例子
- 手把手教你appium_android第一个示例
- 手把手系列之十七——手把手教你做蛋挞
- 手把手系列之三十四——手把手教你做蛋饺
- 手把手系列之四十——手把手教你做双皮奶
- 手把手系列之四十八—手把手教你做寿司
- 创建你的第一个安卓应用1 - 第一课 - 创建一个安卓项目(Project)
- 手把手教你创建个人网站
- 手把手教你创建DuiLib的Demo
- 手把手教你用 IntelliJ IDEA 创建并发布JavaWeb项目
- 手把手教你使用IDEA开发工具创建一个Maven项目
- 手把手教你如何创建vue脚手架项目(最详细!)
- java安全——加密
- USACO: Spinning Wheels
- 程序员自我提高的几点建议 很实诚
- 理解innodb的索引页结构,插入缓冲,自适应哈希索引
- 小白学算法3.1——低位优先字符串排序
- First_OpenGL_Project——手把手教你创建第一个安卓openGL2.0项目
- linux下实时查看tomcat运行日志
- 谁的中国移动?
- Android开发之View.setTag(Object tag)
- 运行第一个 docker image 并在浏览器中查看
- 为什么802.3MAC帧最小是64字节?
- 部分小代码
- C#Hashtable键值对集合
- JQuery的父、子、兄弟节点查找方法