为了在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牛博
  2. 针对Android的Crash监控, 崩溃分析---推
  3. Android中配置和使用Google Map服务
  4. Android(安卓)onTouchEvent, onClick及on
  5. Android(安卓)mvp 架构的自述
  6. Google自己出品的dex转jar工具enjarify的
  7. Android软件开发之盘点所有Dialog对话框
  8. 《Android深度探索(卷1):HAL与驱动开发》新
  9. Android高手进阶教程(四)之----Android(
  10. Android(安卓)热敏打印机打印二维码