最通俗的安卓OpenGL教學03——用純色清屏
阿新 • • 發佈:2020-12-22
技術標籤: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);
}
}
效果是這樣的: