2011-12-20 7 views
5

Android OpenGL Es 2.0 프로젝트에서 사용할 수있는 텍스처 크기에 제한이 있는지 알고 싶습니다. 크기가 4096x4096 인 거대한 텍스처가 작은 화면에 렌더링 될 때 그 의미가 조금 작다는 것을 이해합니다. 그러나 요구 사항이 런타임에 많은 텍스처 사이를 전환하는 것이라면 무엇입니까? 그리고 여러개의 작은 텍스처 업로드 대신에 빠른 싱글 업로드를하기 위해 텍스처 아틀라스를 원한다면. 이 점에 대해 당신의 아이디어를 알려주십시오.텍스처 크기 제한? Android Open GL ES 2.0

또한 장치의 메모리가 제한되어 있으므로 장치에서 처리 할 수있는 이미지의 크기에 제한이 있어야합니다. 하지만 해상도 기반인지 또는 크기 기반인지 알고 싶습니다. 장치에 1024x1024 이미지 크기 제한이있는 경우 압축되지 않은 1024x1024 크기와 비슷한 크기 인 2048x2048 크기의 압축 된 텍스처를 처리 할 수 ​​있습니다.

일반적으로 텍스쳐 크기 제한이나 안드로이드 2.2 이상을 실행하는 정상적인 장치의 해상도에 대해 일반적으로 알려 주시기 바랍니다.

또한 opengles 2.0에서 고해상도 이미지를 처리 ​​할 때 모범 사례가 있는지 알려 주어 로딩 시간과 실행 시간 모두에서 최상의 성능을 얻으십시오.

답변

21

텍스처 크기에 하드웨어 제한이 있습니다. 직접 찾으려면 glbenchmark.com과 같은 사이트로 이동하십시오. 여기에 google galaxy nexus에 대한 세부 정보가 표시됩니다.
자동으로 코드에서 최대 크기를 확인하려면, 당신은 같은 것을 사용할 수 있습니다

int[] max = new int[1]; 
gl.glGetIntegerv(GL10.GL_MAX_TEXTURE_SIZE, max, 0); //put the maximum texture size in the array. 

(GL10를 들어,하지만 같은 방법은 GLES20 존재)는 처리에 관해서

또는 이미지의을 편집하면 안드로이드로 작업 할 때 보통 Bitmap의 인스턴스를 사용합니다. 이것은 이미지의 압축되지 않은 값을 가지고 있으므로 해상도에 따라 다릅니다. 그러나 OpenGL 응용 프로그램에 압축 된 텍스처를 사용하면 메모리 사용 효율이 향상되므로이 압축 된 텍스처를 수정할 수는 없으므로 recommended입니다. previous link에서
:

텍스처 압축은 크게 메모리 요구 사항을 줄이고 메모리 대역폭을 더 효율적으로 활용하여 의 OpenGL 응용 프로그램의 성능을 향상시킬 수 있습니다. 안드로이드 프레임 워크는 당신은 많은 좋은 사례 및 텍스처로드 및 사용에 대한 힌트를 포함 this document 살펴 보셔야합니다

표준 기능으로 ETC1 압축 포맷에 대한 지원을 [...] 제공합니다. 작성자는 명시 적으로 다음을 작성합니다.

모범 사례 : 텍스처 압축에는 ETC를 사용하십시오.

모범 사례 : 표시되는 크기에 적합한 지오메트리 및 텍스처 해상도가 인지 확인하십시오. 화면에서 최대 500 픽셀의 너비에 대해 1k x 1k 텍스처를 사용하지 마세요. 기하학도 마찬가지입니다.