搭建好了自己的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);
}
}
效果是这样的: