2012-12-07 4 views
1

개체를 obj 및 mtl 형식으로 렌더링하는 코드가 있습니다 (android-opengl es 1.1) 작은 개체 (텍스처가 거의 없음)의 경우 텍스처는 30-40을 초과하면 logcat에 다음과 같은 메시지가 나타납니다. eglLockWindowSurface가 메모리를 매핑하지 못했습니다. onSurfaceCreated에있는 모든 텍스처를 glBindTexturetexImage2D (모두 단일 텍스처 단위)으로로드합니다. 그리기 위해 묶어주십시오.바인딩이 너무 많은 텍스처 (100 개 이상)로 인해 오류가 발생합니다.

정확히 무엇이 문제입니까? 몇 시간 동안 수색했지만 텍스처 아트라스를 제외하고는이 상황에 대한 해결책을 찾을 수 없었습니다. 우리 회사는 블렌더/3dsmax의 내보내기 파일을 제공하기 때문에이 방법을 사용할 수 없습니다. 이 오류를 피하고 너무 많은 텍스처로 어떻게 작업 할 수 있습니까?

미리 감사드립니다.

+0

개별 텍스처가 작습니까? 그렇지 않다면 왜 그 숫자가 문제가되는 숫자이며 단순히 사용 가능한 텍스처 메모리가 부족한 총 크기가 아닌지 의심 스럽습니까? –

+0

@ Paul-Jan 크기는 1kb에서 300kb까지 다양합니다 (총 크기 5.12mb). 텍스처의 1/4 만로드하면 괜찮습니다.하지만 3 분의 1은 내가 언급 한 오류를 제공합니다. 나는 그것이 문제를 일으키는 번호일지도 모른다라고 생각했다. –

+0

@ Paul-Jan 고마워요! 질감의 크기였습니다. 나는 그들을 축소했다. (4096kb 이하) 그리고 제 코드가 작동했습니다. 텍스처를로드하는 데 더 효율적인 방법이 있습니까? –

답변

0

로딩 및 바인딩 텍스처에 대한 제한은 최대 정수 크기입니다. 한계는 최대 텍스처 크기 (기기에 따라 다름) 최대 텍스처 크기가 4096kB이면 너비 * 높이 * 4가 4096,000보다 큰 이미지를 바인딩 할 수 없음을 의미합니다. (4는 플로트 크기 임). 이미지를 축소해야합니다.