텍스쳐 용량과 메모리 용량에 대해...

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

텍스쳐 용량과 메모리 용량에 대해...

Post by 비회원 »

gpg나 다른 사이트에서 검색을 해봤는데
키워드를 못찾는것인지 명확한 답변을 찾지 못해 질문드립니다.

A라는 bmp 파일이 10MB 라고 할때

D3DXCreateTextureFromFile() 또는 D3DXCreateTextureFromFileEx()

로 읽어들일때 실제 메모리에 올라가는 용량이 10MB가 아니 더 많은 양이 올라가게 되는데

BMP가 무손실 압축포맷이라 그런것같은데요.

퀄리티는 동일하게 하되 메모리에 올라가는 용량을 줄이는 방법은 없는것인가요?(2마리 토끼를 잡는게 불가능한것인지...)

관련 책이나 사이트라도 알려주시면 고맙겠습니다.
moonyeom
Posts: 168
Joined: 2007-02-05 16:38

Post by moonyeom »

BMP 는 압축포맷이 아니구요...

텍스쳐를 만들때 여러가지 원인에 의해서 파일 자체의 용량보다 메모리가 좀 더 많이 쓰이게 됩니다.

예를 들어...
Device Reset 시에 재로딩을 하지 않아도 되도록 Managed 를 쓰게 되면 텍스쳐 이미지를 한벌 더 만들어두는 셈이라 메모리가 올라가고요,
또, 로드한 비트맵 이미지가 8bit, 16bit, 혹은 24bit 일 경우에 텍스쳐가 32bit 로 만들어지게 되면 그때문에 메모리 용량을 더 쓰게 되고요...
밉맵을 자동으로 만들게 되면 또 용량이 두배가 되고...
뭐 기타 등등 이런저런 이유가 있지요...

BMP 는 일반적으로 품질이 아주 중요할때에 씁니다.
TGA 랑 비슷한데요, 무손실 비압축이죠.

만약 품질이 엄청 중요한 경우가 아니라면 DDS 로 변환해서 써보셔요.
품질이 미묘하게 떨어지지만 파일용량도 메모리용량도 이득을 볼 수 있습니다.
JPG 이든 PNG 이든 결국 텍스쳐로 올라갈때에는 비트맵 이미지로 풀어서 올리는데요,
DDS 의 DXT1, DXT3, DXT5 등으로 변환해서 사용하게 되면 메모리에 올릴때에도 압축된 그대로 올라가거든요.
그래서 메모리 용량도 이익을 볼 수 있어요.

2D 인터페이스 용도로만 쓰는 텍스쳐일 경우에는 딱히 밉맵이 필요없으니
밉맵을 안 만들도록 하는게 좋겠구요...
난, 가져다 쓰는건 왠지 싫어...
비회원

Post by 비회원 »

밉맵 만들지 말아보세요
Locked