1.OpenGL ES简介
OpenGL Es学习,首先要了解Android的基本架构,如下图:
在Android的第三层的Libraries里面就有OpenGL ES库。OpenGL ES是一个跨平台的图形API,给3D图形处理硬件指定了一个标准的软件接口。
2.OpenGL ES在Android的使用
Android提供了两个类:GLSufaceView和GLSurfaceView.Renderer.
2.1GLSurfaceView
GlSurfaceView就是一个surfaceView ,只是增加了Render,用OpenGL来显示渲染。
2.2GLSurfaceView.Renderer
使用GLSurfaceView.setRenderer()将其附加到GLSurfaceView实例。
GLSurfaceView.Renderer要求实现以下方法:
- onSurfaceCreated():创建GLSurfaceView时,系统调用一次该方法。使用此方法执行只需要执行一次的操作,例如设置OpenGL环境参数或初始化OpenGL图形对象。
- onDrawFrame():系统在每次重画GLSurfaceView时调用这个方法。使用此方法作为绘制(和重新绘制)图形对象的主要执行方法。
- onSurfaceChanged():当GLSurfaceView的发生变化时,系统调用此方法,这些变化包括GLSurfaceView的大小或设备屏幕方向的变化。例如:设备从纵向变为横向时,系统调用此方法。我们应该使用此方法来响应GLSurfaceView容器的改变。
使用GlSurfaceView步骤:
- 创建一个GlSurfaceView。
- 设置渲染
- 在GlSurfaceView.renderder中绘制处理显示数据
3.OpenGL ES绘制图形
在Android使用OpenGL ES的步骤:
- 在Manifest中声明OpenGL ES使用,我使用OpenGL ES2.0的API
<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" />
- 设置相关的渲染Renderer,Renderer有三个方法:
- onSurfaceCreated() - 在View的OpenGL环境被创建的时候调用。
- onDrawFrame() - 每一次View的重绘都会调用
- onSurfaceChanged() - 如果视图的几何形状发生变化(例如,当设备的屏幕方向改变时),则调用此方法。
绘制图形
示例代码:
public class GlSurfaceViewActivity extends AppCompatActivity {
private GLSurfaceView gLsurfaceview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gl_surface_view);
gLsurfaceview = findViewById(R.id.gLsurfaceview);
gLsurfaceview.setEGLContextClientVersion(2);
// gLsurfaceview.setRenderer(new Trianglerenderer());//三角形
//gLsurfaceview.setRenderer(new SquareRenderer());//正方形
gLsurfaceview.setRenderer(new CircleRenderer());//圆
gLsurfaceview.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
@Override
protected void onResume() {
super.onResume(); gLsurfaceview.onResume();
}
@Override
protected void onPause() {
super.onPause();
gL