为了在Android应用程序中使用OpenGL ES绘制图形,必须要为他们创建一个视图容器。其中最直接或者最常用的方式就是实现一个GLSurfaceView和一个GLSurfaceView.Renderer。GLSurfaceView是用OpenGL绘制图形的视图容器,GLSurfaceView.Renderer控制在该视图内绘制的内容。

下面将讲解如何使用GLSurfaceView 和 GLSurfaceView.Renderer 在一个简单的应用程序的Activity上面做一个最小的实现。

一:在Manifest中声明OpenGL ES使用

为了让你的应用程序能够使用OpenGL ES 2.0的API,你必须添加以下声明到manifest:

如果你的应用程序需要使用纹理压缩,你还需要声明你的应用程序需要支持哪种压缩格式,以便他们安装在兼容的设备上。

关于更多的纹理压缩格式的知识,可以到https://developer.android.com/guide/topics/graphics/opengl.html#textures做进一步的了解。

二:创建一个Activity 用于展示OpenGL ES 图形

使用OpenGL ES的应用程序的Activity和其他应用程的Activity一样,不同的地方在于你设置的Activity的布局。在许多使用OpenGL ES的app中,你可以添加TextView,Button和ListView,还可以添加GLSurfaceView。

下面的代码展示了使用GLSurfaceView做为主视图的基本实现:

publicclassOpenGLES20ActivityextendsActivity{privateGLSurfaceView mGLView;@OverridepublicvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// Create a GLSurfaceView instance and set it// as the ContentView for this Activity.mGLView =newMyGLSurfaceView(this);setContentView(mGLView);    }}

注意:OpenGL ES 2.0 需要的Android版本是2.2及以上,请确保你的Android项目针对的版本是否符合。

三、创建GLSurfaceView对象

GLSurfaceView是一个特殊的View,通过这个View你可以绘制OpenGL图像。但是View本身没有做太多的事情,主要的绘制是通过设置在View里面的GLSurfaceView.Renderer 来控制的。实际上,创建这个对象的代码是很少的,你能会想尝试跳过extends的操作,只去创建一个没有被修改的GLSurfaceView实例,但是不建议这样去做。因为在某些情况下,你需要扩展这个类来捕获触摸的事件,捕获触摸的事件的方式会在后面的文章里面做介绍。

GLSurfaceView的基本代码很少,为了快速的实现,通常会在使用它的Activity中创建一个内部类来做实现:

classMyGLSurfaceViewextendsGLSurfaceView{privatefinalMyGLRenderer mRenderer;publicMyGLSurfaceView(Context context){super(context);// Create an OpenGL ES 2.0 contextsetEGLContextClientVersion(2);        mRenderer =newMyGLRenderer();// Set the Renderer for drawing on the GLSurfaceViewsetRenderer(mRenderer);    }}

你可以通过设置GLSurfaceView.RENDERMODE_WHEN_DIRTY来让你的GLSurfaceView监听到数据变化的时候再去刷新,即修改GLSurfaceView的渲染模式。这个设置可以防止重绘GLSurfaceView,直到你调用了requestRender(),这个设置在默写层面上来说,对你的APP是更有好处的。

四、创建一个Renderer类

实现了GLSurfaceView.Renderer 类才是真正算是开始能够在应用中使用OpenGL ES。这个类控制着与它关联的

更多相关文章

  1. Android(安卓)4高级编程(第三版)创建应用程序和Activity
  2. Android(安卓)之Toast
  3. 探索Popupwindow-对话框风格的窗口
  4. Android(安卓)Renderscript计算(一)
  5. 我的android studio学习日记
  6. Qt on Android(安卓)之设置应用名为中文
  7. javac错误:javac不是内部或外部命令 也不是可运行的程序 解决方法
  8. Android(安卓)studio常用设置详解
  9. Android(安卓)特别好用的框架 二,Spinner(下拉框)的使用

随机推荐

  1. Android(安卓)OnScrollListener
  2. GPU Accelerated Compositing in Chrome
  3. Android练习之Intent发邮件ACTION_SEND
  4. Android学习之键盘事件
  5. MyBaseAdapter
  6. Android(安卓)Studio默认产生Fragment
  7. 百度地图API学习笔记(四)
  8. android中有这么些个SystemService,挨个儿
  9. AudioTrack&AudioFlinger
  10. Android模拟强制下线通知功能实例代码