一.GLSurfaceView介绍
16lz
2021-01-26
学习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
更多相关文章
- Android培训班(15)
- Android(安卓)— 手撸代码学习事件分发的过程
- (转载) Android(安卓)RecyclerView 使用完全解析 体验艺术般的控件
- Android利用AChartEngine绘制图表
- Android(安卓)手势锁/锁屏/Pin解锁,一种精简高大上且实用的手势锁
- Android培训班(73)Dex文件里类定义dvmDefineClass
- Android中使用OnClickListener接口实现按钮点击的低级失误
- 【Android】通过Java代码替换TabHost中的drawableTop资源
- Android培训班(72)Dex文件里类定义dvmDefineClass