특정폰에서 2MB가 잡히는데 문제는 유니티 에디터에서 똑같이 해도 프로파일러에 해당 텍스쳐가 2MB가 잡힙니다.

Unity3D/Problems 2016. 1. 8. 03:27
반응형

일단 제 환경은, Windows 7 64bit, Unity 4.6.9f1이며, 문제는 이렇습니다.

512 X 512 png 텍스쳐를 생성하고 유니티 프로젝트에 임포트 한 후,
Generate mip map을 끄고 모든 옵션을 체크 해제하고 텍스쳐 압축을 Truecolor(RGBA 32 => 비압축)로 바꿉니다.
이 텍스쳐를 화면에 띄우는 간단한 스크립트를 작성하고 빌드후(굳이 띄우지 않아도 되긴합니다. 둘다 해봤습니다.) 

1) 갤럭시 노트2에 설치합니다.
2) 갤럭시 노트4에 설치합니다.

1번과 2번의 텍스쳐 메모리가 다르게 잡힙니다.

둘다 실행 후 스마트폰의 '실행앱스'로 앱의 메모리를 살펴보면, 
기본 유니티엔진 메모리 외에 1MB가 잡힙니다. 이게 텍스쳐 메모리.
2번은 2MB가 잡힙니다. 딱 2배 입니다.

이론상 512 X 512 X 4byte(32bit) => 1,048,576 byte => 1MB 입니다.
근데 특정폰에서 2MB가 잡히는데 문제는 유니티 에디터에서 똑같이 해도 
프로파일러에 해당 텍스쳐가 2MB가 잡힙니다.

그럴리가 없다고, 뭔가 설정이나 테스트 방법이 문제가 있겠지라고 생각하시는 분은 
빈 프로젝트를 생성하고

Texture2D m_cachedTex;

void Awake()
{
m_cachedTex = new Texture2D(512, 512, TextureFormat.RGBA32, false);
}

로 해놓고 프로파일러로 봐보시면 저와 똑같은 문제를 보실 수 있을 것입니다.
위 문제로 인해, 더 고성능인 갤럭시 노트4에서 메모리 사용량이 증가되어 구동이 되는 현상이 발생합니다.

혹시 이 문제에 대해 경험이 있으시거나, 해결방법을 아시는 분의 도움이 필요합니다.
도와주세요~~~

(포럼에도 질문은 많으나, 명쾌한 답변의 경우를 찾지 못했습니다.)

http://forum.unity3d.com/…/does-unity-always-use-double-me…/

http://answers.unity3d.com/…/double-texture-memory-usage-ev…

http://www.tasharen.com/forum/index.php?topic=5612.0

I tried creating three built exe on window. Scene 1. Plane with empty texture. Scene 2. Plane with 1024x1024 texture RGBA 32 bit 4 MB (from import...
FORUM.UNITY3D.COM








http://answers.unity3d.com/questions/152537/why-does-a-10241024-texture2d-use-so-much-memory.html



Why does a 1024*1024 ARGB32 Texture2D use more than 8MB total memory? I think the correct cost is 4MB (4MB = 1024 1024 32bit / 8 / 1024 / 1024).

I just did a test on Unity3.3 pro. Create an empty project only included a empty scene. Create bellow script:

  1. using UnityEngine;
  2. public class NewBehaviourScript : MonoBehaviour {
  3. public Texture2D tt;
  4. void OnGUI () {
  5. if (GUILayout.Button("Create Texture2D")) {
  6. tt = new Texture2D(1024, 1024, TextureFormat.ARGB32, false);
  7. Resources.UnloadUnusedAssets();
  8. }
  9. }
  10. }

Drag this script to scene.

When I click the button on run time. The profiler of unity display that Textures memory add 4MB but Total memory add more than 8MB.

Here are two screenshots:

Before Create a 1024*1024 ARGB32 Texture2D:

  1. Total: 270.5 MB Delta: 0 B
  2. Texture: 770 / 2.5 MB
  3. Meshes: 26 / 74.9 KB
  4. AnimationClips: 0 / 0 B
  5. Total Object Count: 1134

After Create a 1024*1024 ARGB32 Texture2D:

  1. Total: 279.3 MB Delta: 0 B
  2. Texture: 771 / 6.5 MB
  3. Meshes: 26 / 74.9 KB
  4. AnimationClips: 0 / 0 B
  5. Total Object Count: 1116


반응형
: