개체를 obj 및 mtl 형식으로 렌더링하는 코드가 있습니다 (android-opengl es 1.1) 작은 개체 (텍스처가 거의 없음)의 경우 텍스처는 30-40을 초과하면 logcat에 다음과 같은 메시지가 나타납니다. eglLockWindowSurface가 메모리를 매핑하지 못했습니다. onSurfaceCreated
에있는 모든 텍스처를 glBindTexture
및 texImage2D
(모두 단일 텍스처 단위)으로로드합니다. 그리기 위해 묶어주십시오.바인딩이 너무 많은 텍스처 (100 개 이상)로 인해 오류가 발생합니다.
정확히 무엇이 문제입니까? 몇 시간 동안 수색했지만 텍스처 아트라스를 제외하고는이 상황에 대한 해결책을 찾을 수 없었습니다. 우리 회사는 블렌더/3dsmax의 내보내기 파일을 제공하기 때문에이 방법을 사용할 수 없습니다. 이 오류를 피하고 너무 많은 텍스처로 어떻게 작업 할 수 있습니까?
미리 감사드립니다.
개별 텍스처가 작습니까? 그렇지 않다면 왜 그 숫자가 문제가되는 숫자이며 단순히 사용 가능한 텍스처 메모리가 부족한 총 크기가 아닌지 의심 스럽습니까? –
@ Paul-Jan 크기는 1kb에서 300kb까지 다양합니다 (총 크기 5.12mb). 텍스처의 1/4 만로드하면 괜찮습니다.하지만 3 분의 1은 내가 언급 한 오류를 제공합니다. 나는 그것이 문제를 일으키는 번호일지도 모른다라고 생각했다. –
@ Paul-Jan 고마워요! 질감의 크기였습니다. 나는 그들을 축소했다. (4096kb 이하) 그리고 제 코드가 작동했습니다. 텍스처를로드하는 데 더 효율적인 방법이 있습니까? –