1. 程式人生 > 其它 >最通俗的安卓OpenGL教學03——用純色清屏

最通俗的安卓OpenGL教學03——用純色清屏

技術標籤:OpenGL ES

搭建好了自己的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);

    }
}

效果是這樣的: