First_OpenGL_Project-첫 번째 안드로이드 오픈 GL 만들기 2.0 항목
이 블로그는 코드를 바탕으로 첫 번째 오픈GL의android 프로젝트를 만드는 것을 가르칩니다.
새 항목
4
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
4
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.