그래서 저는 여기서 정말로 혼란스러워집니다. 내가 작업하는 디자이너는 Android 태블릿 용 고품질 이미지 (png 파일)를 원하지만이 게임은 덜 강력한 장치를위한 더 작은 이미지도 가지고 있습니다. 힙에있는 메모리 양은 Runtime.getRuntime().maxMemory() - Runtime.getRuntime().totalMemory()
을 사용하여 사용할 이미지 세트를 결정하는 기준이 될 것이라고 생각했습니다. 그래도 그럴 것 같지 않습니다. BlueStacks에서는 고화질 이미지를 잘로드 할 수 있으며 약 4,000,000 바이트가 있습니다. 디자이너의 Galaxy Nexus에는 큰 이미지 (일부는 이미지 로딩을위한 메모리 부족으로 인한 것임)에 대한 검은 색 상자가 있지만 Galaxy Nexus에는 BlueStacks보다 많은 약 50,000,000 바이트의 사용 가능한 바이트가 있습니다.Android에서 이미지로드의 제한 요소는 무엇입니까?
제한 요인은 무엇입니까? 이와 관련하여 인상적인 화질의 모바일 게임이있는 이유는 무엇입니까? 그렇지만 몇 가지 이미지를로드 할 수는 없습니까? 내가 도대체 뭘 잘못하고있는 겁니까?
참고로 AndEngine을 사용하고 있으며 아래 이미지의로드 예제가 나와 있습니다. 갤럭시 넥서스에로드되지 않은 이미지의
BuildableBitmapTextureAtlas resetTA = new BuildableBitmapTextureAtlas(this.getTextureManager(), 310/d, 190/d,
TextureOptions.BILINEAR);
resetTR = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(resetTA, this, "gfx/" + lowres + "reset.png", 1, 1);
try
{
resetTA.build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(0, 0, 0));
resetTA.load();
}
catch (TextureAtlasBuilderException e)
{
Debug.e(e);
}
하나는 2320x464의 스프라이트 시트 PNG 파일입니다.
원하는 파일의 힙 공간은 약 4MB이며, 아마도 4MB의 단일 블록 공간은 없습니다 (http://commonsware.com/blog/2014/06/16/art-garbage-collection). html – CommonsWare
일반적으로 메모리가 극도로 제한되어 있다고 생각하고 코드를 그렇게 작성해야합니다. 대부분의 장치는 중형 PC에 포함될 수있는 메모리를 가지고 있지 않습니다. 각 앱은 다른 앱 및 Android와 메모리를 공유합니다. 나는 런타임 메모리를 모니터링하는 것이 많은 도움을주지 않을 것이라고 생각한다. 로드 할 때 좋은 샘플 크기가 있어야합니다. 엄지 손톱 크기로만 이동하는 경우 4MB 이미지를 읽는 것이 좋습니다. 실질적인 정보를 얻으려면 안드로이드 가이드의 효율적인 비트 맵 읽기 - http://developer.android.com/training/displaying-bitmaps/index.html – Martin
과거에는 큰 이미지에 2^AndEngine의 n 차원. Andrew가 몇 달 동안 AndEngine을 사용하지 않았으므로 그 빌드가 나중 빌드에서 여전히 문제인지 확실하지 않습니다. – dharms