Blog

2 August 2019

glsurfaceview 예제

이 예제 는 안드로이드 소스 코드 파일 (GLSurfaceView.java)DevDaily.com “자바 소스 코드 웨어하우스”프로젝트에 포함되어 있습니다. 이 프로젝트의 목적은 당신이 “예로 안드로이드를 학습”TM을 하는 데 도움이됩니다. finalize의 일반적인 계약은 Java™ 가상 머신이 종료 o에서 수행 한 작업의 결과를 제외하고 아직 죽지 않은 스레드에서이 개체에 액세스 할 수있는 수단이 더 이상 없다고 결정한 경우 호출된다는 것입니다. f 종료할 준비가 된 다른 개체 또는 클래스입니다. FINALize 메서드는 이 개체를 다른 스레드에서 다시 사용할 수 있도록 하는 등 모든 작업을 수행할 수 있습니다. 그러나 종료의 일반적인 목적은 개체가 취소할 수 없이 삭제되기 전에 정리 작업을 수행하는 것입니다. 예를 들어 입력/출력 연결을 나타내는 개체에 대한 종료 메서드는 개체가 영구적으로 삭제되기 전에 연결을 끊기 위해 명시적 I/O 트랜잭션을 수행할 수 있습니다. 이벤트를 처리하려면 일반적으로 GLSurfaceView를 하위 클래스로 분류하고 다른 View와 마찬가지로 적절한 메서드를 재정의합니다. 그러나 이벤트를 처리할 때 렌더링 스레드에서 실행 중인 Renderer 개체와 통신해야 할 수 있습니다.

표준 Java 스레드 간 통신 메커니즘을 사용하여 이 작업을 수행할 수 있습니다. 또한 렌더러와 통신하는 비교적 쉬운 방법 중 하나는 queueEvent(java.lang.Runnable)를 호출하는 것입니다. 예를 들어 다음 코드 예제에서는 GLSurfaceView를 기본 보기로 사용하는 활동의 최소 구현을 보여 줍니다: android, 배열 목록, 콘텐츠, egl10, eglconfig, eglhelper, gl, gl10, glsurfaceview, glthread, glwrapper, 중단된 예외 , 재정의, 렌더러, 실행 가능, 세마포, UI, 유틸리티, 유틸리티, 보기 대화형 응용 프로그램(예: 게임)을 원하는 경우 입력 이벤트를 쉽게 얻을 수 있는 쉬운 방법이기 때문에 일반적으로 GLSurfaceView를 하위 클래스로 지정합니다. 다음은 이 작업을 수행하는 방법을 보여주는 약간 더 긴 예입니다: 두 가지 이유로 GLRenderer 클래스를 추상화했습니다. 첫 번째 이유는 수명 주기 코드를 렌더링 코드와 분리하여 따라하기가 좀 더 쉬워졌기 때문입니다. 두 번째 이유는 클래스를 더 재사용할 수 있게 하기 때문입니다. 따라서 예제를 작동하려면 GLRenderer를 상속한 클래스를 만들어야 합니다. 이것은 단지 화면을 검게 만드는 간단한 구현입니다. 일반적으로 GLSurfaceView를 하위 분류하고 하나 이상의 시스템 입력 이벤트 메서드를 재정의하여 사용합니다.

응용 프로그램에서 이벤트 메서드를 재정의할 필요가 없는 경우 GLSurfaceView를 있는 것으로 사용할 수 있습니다. 대부분의 경우 GLSurfaceView 동작은 하위 클래스지정이 아니라 “set” 메서드를 호출하여 사용자 지정됩니다. 예를 들어 일반 뷰와 달리 드로잉은 setRenderer(android.opengl.GLSurfaceView.Renderer) 호출을 사용하여 GLSurfaceView에 등록된 별도의 렌더러 오브젝트에 위임됩니다.

Bize Ulaşın