복잡한 수학적 표현을 기반으로 임의의 이미지를 생성하는 Android 앱을 만들고 있습니다. 픽셀의 색상은 위치와 선택한 표현식에 따라 다릅니다. (나는 "무작위 예술"을 생산하는 많은 iPhone 앱을 보았지만 비교적 적은 수의 Android 앱을 보았습니다.)SurfaceView를 사용하여 하나의 복잡한 이미지를 그리는 방법
Nexus S 개발 폰에서 이미지를 그릴 때 5 ~ 15 초가 소요됩니다.
UI 스레드를 응답 상태로 유지하려면 SurfaceView
클래스의 목적처럼 보입니다. SurfaceView
의 거의 모든 예제는 하나의 복잡한 이미지가 아니라 애니메이션을 처리합니다. 이미지가 그려 지거나 렌더링 된 후에는 사용자가 될 때까지 변경하지 않을 것입니다.
따라서 올바른 구성 요소는 SurfaceView
입니까? 그렇다면 SurfaceView
또는 이미지 내부 렌더링이 완료되면 이미지를 렌더링 할 때 내부 스레드로부터 콜백을받을 수 있습니까? 콜백은 고해상도 이미지 아트의 저해상도 및 고르지 않은 버전을 전환해도 괜찮습니까?
SurfaceView
대신 단일 이미지의 복잡한 렌더링에 더 좋은 대안이 있습니까? (애니메이션이 아닙니다.)
건배!
왜 openGl을 사용하지 않습니까? – slayton
일반 SurfaceView보다 OpenGL (GLSurfaceView를 사용한다고 가정)을 사용하면 어떤 이점이 있습니까? –
속도 저하는 렌더링이 아니라 계산에 있기 때문에. 임의의 수학적 계산을 GLSL 쉐이더 언어로 오버로드하는 것은 어렵습니다. :). NDK 경로를 사용하거나 RenderScript의 Compute API를 사용하는 것이 더 나은 방법 일 수 있습니다. –