DirectX Graphics 레퍼런스 DDS 파일 레퍼런스   [목차열람] [주소복사] [슬롯비우기]
DDS 파일 레퍼런스
 
Microsoft DirectX 9.0

DDS 파일 레퍼런스


텍스처 및 큐브 환경 맵을 보존하려면 , Microsoft® DirectDraw® 표면 (DDS) 파일 포맷을 사용한다. 모두, 밉맵 레벨을 정의해도 하지 않아도 되다. 이 포맷에서는 압축 픽셀 포맷 및 미압축 픽셀 포맷을 보존할 수 있다. DXTn 압축 데이터를 보존하는 경우는 이 파일 포맷을 사용하면 좋다. 이 파일 포맷은, Microsoft DirectX® Texture 툴 (DXTex 툴)외, 써드파티제 툴의 일부 및 Direct3D extension (D3DX) 라이브러리에서도 지원 되고 있다.

이 포맷은 DirectX 7.0 으로 도입되었다. DirectX 8.0 에서는, 볼륨 텍스처의 지원이 추가되었다.

파일 레이아웃

DDS 파일의 기본 구조는, 헤더와 1 개의 바이노리필드에 기술된 1 개 또는 복수의 표면으로 구성된다. 헤더는, 4 문자의 코드 (FOURCC)와 DDSURFACEDESC2 구조체로부터 완성된다. 이 헤더는, 파일 전체의 내용을 식별하기 위해서 필요한 모든 정보를 포함하고 있다. 다음의 그림에, DDS 파일의 레이아웃을 나타낸다.

DDS 파일 포맷의 레이아웃

표면 포맷 헤더

DDSURFACEDESC2 구조체는, DirectDraw 문서에 정의된 표준의 플래그 및 값을 사용해 파일의 내용을 기술한다. 다만, 완전한 호환성을 확보하기 위해서, 파일에는 한정된 값세트를 사용한다. 애플리케이션이나 그 외의 툴로 간단하게 로드할 수 있도록(듯이) 하려면 , 견고한 리더로 키값을 검증해, 견고한 라이터로, 다양한 필드 및 옵션에 필요한 플래그가 모두 설정되어 있는 것을 확인한다. 또, 견고한 리더로, 대응하는 플래그가 설정되지 않은 경우는 필드를 사용하지 않고, 견고한 라이터로, 미정도리의 필드를 모두 0 으로 설정할 필요가 있다.

다음의 표는, DDSURFACEDESC2 구조의 멤버를 나타내고 있다.

멤버설명
DWORD dwSize구조체의 사이즈. 이 멤버는 반드시 124 로 설정하는 것.
DWORD dwFlags유효한 필드를 나타내는 플래그. 항상 DDSD_CAPS, DDSD_PIXELFORMAT, DDSD_WIDTH, DDSD_HEIGHT 를 포함하는 것.
DWORD dwHeight메인 이미지의 픽셀 단위의 높이
DWORD dwWidth메인 이미지의 픽셀 단위의 폭
DWORD dwPitchOrLinearSize미압축 포맷의 경우는, 메인 이미지의 주사선 근처의 바이트수 (DWORD 로 정렬). 이 경우는 dwFlags 에 DDSD_PITCH 를 포함한다. 압축 포맷의 경우는, 메인 이미지의 총바이트수. 이 경우는 dwFlags 에 DDSD_LINEARSIZE 를 포함한다.
DWORD dwDepth볼륨 텍스처의 경우는, 볼륨의 깊이. 이 경우는 dwFlags 에 DDSD_DEPTH 를 포함한다.
DWORD dwMipMapCount밉맵 레벨이 정의된 밉맵의 경우는, 메인 이미지의 밉맵 체인에 포함되는 총레벨수. 이 경우는 dwFlags 에 DDSD_MIPMAPCOUNT 를 포함한다.
DWORD dwReserved1[11]
DDPIXELFORMAT ddpfPixelFormat픽셀 포맷의 구조체를 지정하는 32 바이트의 값.
DDCAPS2  ddsCaps능력의 구조체를 지정하는 16 바이트의 값.
DWORD dwReserved2

DDS 파일 포맷이 받는 제약에 의해, 이 설명에 사용한 필드명은 DDSURFACEDESC2 필드에 정확하게 대응하고 있지 않다. 다만, DDSURFACEDESC2 구조체를 사용하는 것은 가능해, 또 이것을 사용해야 하는 것이다. 파일을 검증하려면 , 매직 DDS 값 및 헤더의 dwSize 값을 사용한다.

헤더의 ddpfPixelFormat 필드에서 이미지의 픽셀 포맷을 지정한다. 이것을 사용해, Microsoft Direct3D® 에 의해 지원 되는 모든 포맷을 기술할 수 있다. 보통, DDS 파일은 RGB 및 FOURCC 포맷의 어느 쪽인가에 한정된다. 일반적으로, 그 외의 포맷은 지원하지 않는다. 확실히 지원 되도록(듯이) 하려면 , RGB 포맷은 A8R8G8B8, A1R5G5B5, A4R4G4B4, R8G8B8, R5G6B5 로 한정해, FOURCC 포맷은 DXT1, DXT2, DXT3, DXT4, 및 DXT5 로 한정한다. 고도의 리더에서는, 가능한 경우는 그 외의 포맷도 처리된다.

다음의 표는, DDPIXELFORMAT 구조체의 레이아웃을 나타내고 있다.

멤버설명
DWORD dwSize구조체의 사이즈. 이 멤버는 반드시 32 로 설정하는 것.
DWORD dwFlags유효한 필드를 나타내는 플래그. 미압축 포맷에서는, RGB 포맷을 나타내는데, 보통 DDPF_RGB 를 사용하지만, 압축 포맷에서는, DDPF_FOURCC 를 4 문자의 코드와 함께 사용한다.
DWORD dwFourCC압축 포맷의 4 문자의 코드. 이 경우는 dwFlags 에 DDPF_FOURCC 를 포함한다. DXTn 압축의 경우는, 이것을 "DXT1","DXT2","DXT3","DXT4", 또는 "DXT5" 로 설정한다.
DWORD dwRGBBitCountRGB 포맷의 경우는, 포맷에 포함되는 총비트수. 이 경우는 dwFlags 에 DDPF_RGB 를 포함한다. 보통, 이 값은 16, 24, 또는 32. A8R8G8B8 의 경우는 32.
DWORD dwRBitMask

DWORD dwGBitMask

DWORD dwBBitMask
RGB 포맷의 경우, 이 3 개의 필드에는 적, 초록, 및 파랑 채널의 마스크가 들어간다. A8R8G8B8 의 경우, 이러한 값은 각각 0 x00ff0000, 0 x0000ff00, 및 0x000000ff 가 된다.
DWORD dwRGBAlphaBitMaskRGB 포맷의 경우, 여기에는 알파 채널의 마스크가 있으면 그 마스크가 들어간다. 이 경우는 dwFlags 에 DDPF_ALPHAPIXELS 를 포함한다. A8R8G8B8 의 경우, 이 값은 0xff000000 가 된다.

이 포맷의 마지막 상세 정보는, 헤더의 ddsCaps 필드로 설정된 능력 비트로부터 추측된다. ddsCaps 구조체의 레이아웃을 다음 표에 나타낸다.

멤버설명
DWORD dwCaps1DDS 파일에는 반드시 DDSCAPS_TEXTURE 를 포함하는 것. 파일이 밉맵을 포함하고 있는 경우는, DDSCAPS_MIPMAP 를 설정할 필요가 있다. 밉맵, 큐브 환경 맵, 또는 볼륨 텍스처와 같이 복수의 표면을 가지는 DDS 파일에서는, DDSCAPS_COMPLEX 도 설정할 필요가 있다.
DWORD dwCaps2큐브 환경 맵의 경우는, DDSCAPS2_CUBEMAP 과 맵의 1 개 혹은 복수의 면 (DDSCAPS2_CUBEMAP_POSITIVEX, DDSCAPS2_CUBEMAP_NEGATIVEX, DDSCAPS2_CUBEMAP_POSITIVEY, DDSCAPS2_CUBEMAP_NEGATIVEY, DDSCAPS2_CUBEMAP_POSITIVEZ, DDSCAPS2_CUBEMAP_NEGATIVEZ)을 포함한다. 볼륨 텍스처의 경우는 DDSCAPS2_VOLUME 를 포함한다.
DWORD Reserved[2]

DirectX 8.0 으로부터는, 큐브 환경 맵을 기술 할 때는 반드시 모든 면을 정의하는 것에 주의 해야 한다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP