最通俗的安卓OpenGL教学03——用纯色清屏

搭建好了自己的EGL环境后,我会循循渐进的在示例中实现OpenGL的各种基本操作,一步一步来,先从最简单的清屏开始

安卓OpenGL ES 清屏可以采用纯色、纹理等来清屏。像很多的播放器,如抖音,它们在网络网络状况不好时,播放控件往往是有一个带log的默认背景的,这在OpenGL中实现就可以采用纹理来作为底部背景,当然在后续的文章中会慢慢实现这些功能。现在,就来通过自己搭建的EGL环境来实现一个清屏操作。

说明:为了最最通俗易懂,照顾到新新手,我会把OpenGL每一个功能,放入到功能对应的Render中,在每一个Render中实现想要的功能。

这里还是以红色作为清屏颜色。清屏步骤如下:

  • 自定义YEmptyRender,实现YGLSurfaceView.YGLRender的三个接口
  • 在YEmptyRender的onDrawFrame回调中设置清屏
  • 自定义YEmptySurfaceView,继承自定义的YGLSurfaceView
  • 在YEmptySurfaceView 调用setRender()来使用YEmptyRender

1.在自定义Render中 清屏

package com.york.media.opengl.demo.empty;

import android.opengl.GLES20;

import com.york.media.opengl.egl.YGLSurfaceView;


/**
 * author : York
 * date   : 2020/12/20 14:45
 * desc   : 最简单的一个实例 用红颜色 清屏
 */
public class YEmptyRender implements YGLSurfaceView.YGLRender {


    public YEmptyRender() {
    }

    @Override
    public void onSurfaceCreated() {

    }

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

    }

    @Override
    public void onDrawFrame() {
        //用红颜色 清屏
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
        GLES20.glClearColor(1f,0f,0f,1f);
    }
}

2.在自定义的YGLSurfaceView中 使用Render

package com.york.media.opengl.demo.empty;

import android.content.Context;
import android.util.AttributeSet;

import com.york.media.opengl.egl.YGLSurfaceView;

/**
 * author : York
 * date   : 2020/12/20 14:44
 * desc   : 用红颜色 清屏 的 YGLSurfaceView
 */
public class YEmptySurfaceView extends YGLSurfaceView {

    public YEmptySurfaceView(Context context) {
        this(context, null);
    }

    public YEmptySurfaceView(Context context, AttributeSet attrs) {
        super(context, attrs);
        YEmptyRender yEmptyRender = new YEmptyRender();
        setRender(yEmptyRender);

    }
}

效果是这样的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值