First_OpenGL_Project-첫 번째 안드로이드 오픈 GL 만들기 2.0 항목

8245 단어 androidOpenGL
First_OpenGL_Project-첫 번째 안드로이드 오픈 GL 만들기 2.0 항목
이 블로그는 코드를 바탕으로 첫 번째 오픈GL의android 프로젝트를 만드는 것을 가르칩니다.
새 항목
4
  • 애플리케이션 이름, 입력:First OpenGL Project
  • 4
  • 최저 SDK 버전 선택 API 10:Andriod 2.3.3(Gingerbread);OpenGL ES 2.0을 완전히 지원하는 최소 버전 번호입니다

  • GLSurfaceView 인스턴스 생성
    현재로서는 코드가 별로 없습니다:/Users/fanyu/Desktop/First OpenGL Project/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
    package com.van.fanyu.firstopenglproject;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    }
    

    이 activity에 GLSurfaceView 실례를 추가하면 OpenGL을 초기화할 수 있습니다./Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
    public class MainActivity extends AppCompatActivity {
        private GLSurfaceView glSurfaceView;
        private boolean rendererSet = false;

    setContentView()를 제거하고 glSurfaceView를 초기화합니다./Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            glSurfaceView = new GLSurfaceView(this);

    시스템이 OpenGL2를 지원하는지 확인합니다.0
    /Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
        //        OpenGL2.0
        final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
        final boolean supportsEs2 = configurationInfo.reqGlEsVersion>=0x20000;

    OpenGL에 대한 표면 렌더링 구성
    /Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/MainActivity.java
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            ……
    
            if (supportsEs2){
                glSurfaceView.setEGLContextClientVersion(2);
    
                glSurfaceView.setRenderer(new FirstOpenGLProjectRender());
            }else {
                Toast.makeText(this,"This device does not support OpenGL ES 2.0",Toast.LENGTH_LONG).show();
                return;
            }
            setContentView(glSurfaceView);

    activity 라이프 사이클에서 glSurfaceView 작업
    다음 코드가 비교적 중요합니다. 그렇지 않으면 프로그램이 붕괴됩니다./Users/fanyu/Desktop/First OpenGL Project/app/src/main/java/com/van/firstopenglproject/MainActivity.java
        @Override
        protected void onPause() {
            super.onPause();
            if (rendererSet){
                glSurfaceView.onPause();
            }
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            if (rendererSet){
                glSurfaceView.onResume();
            }
        }

    Renderer 클래스 만들기
    같은 패키지에First OpenGL Project Render 클래스를 만들어서 Renderer 인터페이스를 실현합니다./Users/fanyu/Desktop/FirstOpenGLProject/app/src/main/java/com/van/fanyu/firstopenglproject/FirstOpenGLProjectRender.java
    package com.van.fanyu.firstopenglproject;
    
    import android.opengl.GLSurfaceView;
    
    import javax.microedition.khronos.egl.EGLConfig;
    import javax.microedition.khronos.opengles.GL10;
    
    import static android.opengl.GLES20.GL_COLOR_BUFFER_BIT;
    import static android.opengl.GLES20.glClear;
    import static android.opengl.GLES20.glClearColor;
    import static android.opengl.GLES20.glViewport;
    
    /** * Created by fanyu on 16/2/21. */
    public class FirstOpenGLProjectRender implements GLSurfaceView.Renderer {
    
        //   activity onCreate  
        @Override
        public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
            //          
            //           、     。         alpha,       。
            glClearColor(1.0f,0.0f,0.0f,0.0f);
        }
    
        //            
        @Override
        public void onSurfaceChanged(GL10 gl, int width, int height) {
            //  GLSurfaceView       
            glViewport(0,0,width,height);
        }
    
        //      ,        。      ,         ,        ,       。
        @Override
        public void onDrawFrame(GL10 gl) {
            //            ,    glClearColor()            
            glClear(GL_COLOR_BUFFER_BIT);
        }
    }
    

    소결
    이 프로젝트는 OpenGL을 초기화하고 Android Activity의 라이프 사이클에 응답하여 화면을 비웁니다.
    작성자 정보
    4
  • 개인 블로그:http://blog.csdn.net/fy9987899

  • 4
  • github 프로젝트:https://github.com/fanyu2013/Android-Blogs
  • 좋은 웹페이지 즐겨찾기