package com.asha.vrlib; import android.content.Context; import android.opengl.GLSurfaceView; import android.view.View; import com.google.android.apps.muzei.render.GLTextureView; /** * Created by hzqiujiadi on 16/7/11. * hzqiujiadi ashqalcn@gmail.com */ public abstract class MDGLScreenWrapper { abstract public View getView(); abstract public void setRenderer(GLSurfaceView.Renderer renderer); abstract public void init(Context context); abstract public void onResume(); abstract public void onPause(); public static MDGLScreenWrapper wrap(GLSurfaceView glSurfaceView){ return new MDGLSurfaceViewImpl(glSurfaceView); } public static MDGLScreenWrapper wrap(GLTextureView glTextureView){ return new MDGLTextureViewImpl(glTextureView); } private static class MDGLTextureViewImpl extends MDGLScreenWrapper { GLTextureView glTextureView; public MDGLTextureViewImpl(GLTextureView glTextureView) { this.glTextureView = glTextureView; } @Override public View getView() { return glTextureView; } @Override public void setRenderer(GLSurfaceView.Renderer renderer) { glTextureView.setRenderer(renderer); } @Override public void init(Context context) { glTextureView.setEGLContextClientVersion(2); glTextureView.setPreserveEGLContextOnPause(true); } @Override public void onResume() { glTextureView.onResume(); } @Override public void onPause() { glTextureView.onPause(); } } private static class MDGLSurfaceViewImpl extends MDGLScreenWrapper { GLSurfaceView glSurfaceView; private MDGLSurfaceViewImpl(GLSurfaceView glSurfaceView) { this.glSurfaceView = glSurfaceView; } @Override public View getView() { return glSurfaceView; } @Override public void setRenderer(GLSurfaceView.Renderer renderer) { glSurfaceView.setRenderer(renderer); } @Override public void init(Context context) { glSurfaceView.setEGLContextClientVersion(2); glSurfaceView.setPreserveEGLContextOnPause(true); } @Override public void onResume() { glSurfaceView.onResume(); } @Override public void onPause() { glSurfaceView.onPause(); } } }