Android 音视频开发(五) : OpenGL ES API,了解 OpenGL 开发的基本流程,使用 OpenGL 绘制一个三角形,正方形,圆

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步骤:

  1. 创建一个GlSurfaceView。
  2. 设置渲染
  3. 在GlSurfaceView.renderder中绘制处理显示数据

3.OpenGL ES绘制图形

在Android使用OpenGL ES的步骤:

  1. 在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" />

     

  2. 设置相关的渲染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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值