学习Android视频水印,我们使用GLSurfaceView,比SurfaceView绘制效率高,而且内部实现了GLThread,绘制直接用OpenGL来进行,效率高。
GLSurfaceView的使用
可以在Activity中新建一个SurfaceView,然后使用findViewById然后使用;但是本代码直接将GlSurfaceView作为setContentView的参数;
- 直接在整个Activity上绘制
代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGLSurfaceView = new GLSurfaceView(this);
mGLSurfaceView.setEGLContextClientVersion(2);
mGLSurfaceView.setRenderer(new MyRender(this));
//setContentView(R.layout.activity_main);
setContentView(mGLSurfaceView);
}
- 单独封装一个类MyRender用来控制绘制逻辑
public class MyRender implements GLSurfaceView.Renderer {
private Context mContext;
public MyRender(Context context) {
this.mContext = context;
}
public void onSurfaceCreated(GL10 gl10, EGLConfig config) {
//设定颜色RGBA
glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
}
public void onSurfaceChanged(GL10 gl10, int width, int height) {
//设置区域,x, y, width, height
glViewport(0, 0, width, height);
}
public void onDrawFrame(GL10 gl10) {
//清空屏幕,擦除屏幕上所有的颜色,用glClearColor定义的颜色填充
glClear(GL_COLOR_BUFFER_BIT);
}
}
- 注意GLSurfaceView的生成周期
@Override
protected void onPause() {
super.onPause();
mGLSurfaceView.onPause();
}
@Override
protected void onResume() {
super.onResume();
mGLSurfaceView.onResume();
}
- 最终显示效果为:
以上就为OpenGLES绘制做好了基础工作;
代码地址为:https://download.csdn.net/download/gaojun1146/10696504