要用OpenGl ES在应用程序中绘制图像,首先你要创建与之对应的视图容器。
当中最直接的方法就是使用GLSurfaceView和GLSurfaceView.Renderer接口。
GLSurfaceView是OpenGL所绘制的图形的视图容器,而GLSurfaceView.Renderer控制在视图上所绘制的图像。想获取更多关于这两个类的信息,请参考OpenGl ES开发指南。
GLSurfaceView只是把OpenGL ES图像组合到应用程序的其中一种方法,但对于绘制全屏或接近全屏的图形来说,它是一个很好的选择。开发者如果想把OpenGL ES图像组合成布局中的一小部分,可以查看TextureView。事实上,独立开发者也可以在SurfaceView上创建OpenGL ES视图,但这需要写更多额外的代码。
在Manifest声明OpenGL ES的使用
要在应用程序中使用 OpenGL ES 2.0 API,你必须在Manifest添加以下的声明:
- <uses-feature android:glEsVersion="0x00020000" android:required="true" />
如果你的应用程序中使用到了纹理压缩,你必须声明应用程序所支持的压缩格式,以便提醒不支持这些格式的设备不会尝试运行你的应用程序:
- <supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
- <supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />
想获取更多关于纹理压缩格式的信息,请参考OpenGl ES开发指南。
创建OpenGL ES的Activity
Android使用到OpenGL ES的应用程序和其他的应用程序的activities一样,都有一个用户界面。当中不同就是,在activity的布局中你使用了什么控件,在很多应用中,你可能会使用TextView,Button和ListView,在使用了OpenGL ES的应用程序,你还可以添加GLSurfaceView。
package com.example.opengldemo;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class OpenGLES20Activity extends AppCompatActivity {
private GLSurfaceView glView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glView = new MyGLSurfaceView(this);
setContentView(glView);
}
@Overri

本文详细介绍了如何使用OpenGLES2.0在Android应用中绘制图像,包括GLSurfaceView和GLSurfaceView.Renderer的使用,以及如何在Manifest中声明OpenGLES的使用。通过实例,展示了创建OpenGLESActivity,自定义GLSurfaceView,以及使用shader语言进行图形渲染的过程。
最低0.47元/天 解锁文章
2万+





