OpenGL ES之三——绘制纯色背景

概述

这是一个系列的Android平台下OpenGl ES介绍,从最基本的使用最终到VR图的展示的实现,属于基础篇。(后面针对VR视频会再有几篇文章,属于进阶篇)

OpenGL ES之一——概念扫盲
OpenGL ES之二——Android中的OpenGL ES概述
OpenGL ES之三——绘制纯色背景
OpenGL ES之四——绘制点,线,三角形
OpenGL ES之五——相机和投影,绘制等腰三角形
OpenGL ES之六——绘制矩形和圆形
OpenGL ES之七——着色器语言GLSL
OpenGL ES之八——GLES20类和Matrix类
OpenGL ES之九——相机和投影
OpenGL ES之十——纹理贴图(展示一张图片)
OpenGL ES之十一——绘制3D图形
OpenGL ES之十二——地球仪和VR图

本篇概述

从本文起开始进入编程阶段,本文目的主要是介绍如何使用OpenGL Es绘制纯色背景,通过这个过程让大家了解一下其使用流程

流程大致如下(由于是全屏渲染成纯色,这里也不会涉及到顶点着色器和片段着色器):

1.新建一个Android工程
2.配置OpenGL ES环境
3.GLSurfaceView作为展示View
4.实现自己的GLSurfaceView.Renderer完成具体的绘制工作

一. 配置OpenGL ES环境

在AndroidManifest.xml清单文件中添加如下


二. GLSurfaceView作为展示View

布局文件如下




    


渲染器如下

此时各个实现都是空的,后面详解渲染过程

public class PureBackgroundRender implements GLSurfaceView.Renderer{
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {

    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {

    }

    @Override
    public void onDrawFrame(GL10 gl) {

    }
}

Activity如下

public class PureBackgroundActivity extends AppCompatActivity {
    private GLSurfaceView glSurfaceView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_pure_background);
        initView();
    }

    private void initView() {
        glSurfaceView = findViewById(R.id.pure_background_glsrufaceview);
        //设置OpenGL ES版本,这里我使用3.0;当然为了兼容更低版本系统可以使用2.0;如何选择和实现兼容性前一篇文章已写。
        glSurfaceView.setEGLContextClientVersion(3);
        //实例化渲染器
        GLSurfaceView.Renderer renderer = new PureBackgroundRender();
        //GLSurfaceView设置渲染器
        glSurfaceView.setRenderer(renderer);
    }
}

三.实现自己的GLSurfaceView.Renderer

public class PureBackgroundRender implements GLSurfaceView.Renderer{
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        //设置背景颜色
        GLES30.glClearColor(0, 0, 1, 1);
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        //设置视图窗口
        GLES30.glViewport(0, 0, width, height);
    }

    @Override
    public void onDrawFrame(GL10 gl) {
        //把颜色缓冲区设置为我们预设的颜色
        GLES30.glClear(GL10.GL_COLOR_BUFFER_BIT);
    }
}

四.效果如下

OpenGL ES之三——绘制纯色背景_第1张图片

你可能感兴趣的:(OpenGL,ES)