美文网首页
OpenGL ES 2.0中搭建入门(二)

OpenGL ES 2.0中搭建入门(二)

作者: 冉冉升起的小太阳 | 来源:发表于2017-04-26 11:58 被阅读36次

    检测手机是否支持OpenGL 基本都支持

       /*检测是否支持OpenGLEs2.0*/
        private void checkSupported() {
            ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
            ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
            supportsEs2 = configurationInfo.reqGlEsVersion >= 0x2000;
    
            boolean isEmulator = Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1
                    && (Build.FINGERPRINT.startsWith("generic")
                    || Build.FINGERPRINT.startsWith("unknown")
                    || Build.MODEL.contains("google_sdk")
                    || Build.MODEL.contains("Emulator")
                    || Build.MODEL.contains("Android SDK built for x86"));
            supportsEs2 = supportsEs2 || isEmulator;
        }
    

    Activity的生命周期

       /*生命周期*/
       @Override
       protected void onPause() {
           super.onPause();
           glSurfaceView.onPause();
       }
    
       @Override
       protected void onResume() {
           super.onResume();
           glSurfaceView.onResume();
       }
    

    全部Activity代码

    
    public class MainActivity extends AppCompatActivity {
        private boolean supportsEs2;
        private GLSurfaceView glSurfaceView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            checkSupported();
            if (supportsEs2){
                glSurfaceView = new GLSurfaceView(this);
               glSurfaceView.setEGLConfigChooser(8,8,8,8,16,0);
                glSurfaceView.setRenderer(new GLRenderer());
    
                setContentView(glSurfaceView);
            }else{
               // setContentView(R.layout.activity_main);
                Toast.makeText(MainActivity.this,"暂不支持OpenGL",Toast.LENGTH_SHORT).show();
            }
    
    
        }
    
        /*检测是否支持OpenGLEs2.0*/
        private void checkSupported() {
            ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
            ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
            supportsEs2 = configurationInfo.reqGlEsVersion >= 0x2000;
    
            boolean isEmulator = Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1
                    && (Build.FINGERPRINT.startsWith("generic")
                    || Build.FINGERPRINT.startsWith("unknown")
                    || Build.MODEL.contains("google_sdk")
                    || Build.MODEL.contains("Emulator")
                    || Build.MODEL.contains("Android SDK built for x86"));
            supportsEs2 = supportsEs2 || isEmulator;
        }
    
        /*生命周期*/
        @Override
        protected void onPause() {
            super.onPause();
            glSurfaceView.onPause();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            glSurfaceView.onResume();
        }
    }
    

    1Render 中代码

     public class GLRenderer implements GLSurfaceView.Renderer {
    
        @Override
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    
        }
    
        @Override
        public void onSurfaceChanged(GL10 gl, int width, int height) {
    
        }
    
        @Override
        public void onDrawFrame(GL10 gl) {
    
        }
    }
    

    2 Renderer显示背景颜色

    @Override
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
            gl.glClearColor(1f, 0f, 0f, 0f);
        }
    
        @Override
        public void onSurfaceChanged(GL10 gl, int width, int height) {
            gl.glViewport(0, 0, width, height);
        }
    
        @Override
        public void onDrawFrame(GL10 gl) {
            gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        }
    
    效果

    相关文章

      网友评论

          本文标题:OpenGL ES 2.0中搭建入门(二)

          本文链接:https://www.haomeiwen.com/subject/vwjizttx.html