몇 주 동안이 문제를 해결하기 위해 노력했지만 지금해야할 일을 알고 있습니다.Android OpenGL : 메모리가 부족할 가능성이 있습니까?
일부 안드로이드 장치는 텍스처의 양을로드 할만큼의 메모리를 가지고 있지 않다고 생각합니다. 문제를 일으키는 다른 것이 될 수 있지만, 실제로 이것을 어떻게 해야할지 모르기 때문에 말입니다.
전체 PNG가 1024x1024로로드되어 총 4.8MB가됩니다. 다음은로드 텍스처
GL10 gl = glGraphics.getGL();
int[] textureIds = new int[1];
gl.glGenTextures(1, textureIds, 0);
textureId = textureIds[0];
InputStream in = null;
try {
in = fileIO.readAsset(fileName);
Bitmap bitmap = BitmapFactory.decodeStream(in);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
setFilters(GL10.GL_LINEAR , GL10.GL_LINEAR);
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
width = bitmap.getWidth();
height = bitmap.getHeight();
bitmap.recycle();
} catch(IOException e) {
throw new RuntimeException("Couldn't load texture '" + fileName +"'", e);
} finally {
if(in != null)
try { in.close(); } catch (IOException e) { }
}
내 디자 이어 HD에 아무런 문제는 없습니다
의 OpenGL을 방법이지만, HTC 차 차에 텍스처를 많이 모두에 표시 해달라고과 갤럭시 S에 두 개의 텍스처는 그냥 흰색 나타납니다. 46 : 28.907 : E/Adreno200-ES20 (1501) override1 = 0xfffffffe, override2 = OXFFFF가 *이상한 경우 텍스처
02-04 (15)를로드하면서 차차이 오류 발생 Cha Cha가 잠겨져 (OpenGL 텍스처가 파괴되었습니다.) 잠금 해제 된 (다시로드 된 텍스처) 초기에는 존재하지 않는 특정 텍스처가 이제는 보이지만 다른 텍스처는 이제 볼 수 없습니다.
메모리 문제입니까? 그렇다면이 문제를 해결할 방법이 있습니까?
감사
텍스처가 4.8MB 이상의 메모리 소비를 유발하는 렌더링을 위해 비트 맵으로 디코딩된다는 점에 유의하십시오. – harism
당신의 비트 맵이 RGBA 비트 맵인 경우, 1024x1024 * 4x28 = 117,440,512 바이트 또는 약 117 메가 헤르츠라고 할 수 있습니다. 그래서 예, 그것은 많은 휴대폰에 너무 많은 것 같습니다. – user1118321
게임에 고해상도 이미지가 여러 개 포함될 경우 어떻게 가능합니까? – Chris