D3DFORMAT

다양한 유형의 표면 형식을 정의합니다.

typedef enum _D3DFORMAT {
    D3DFMT_UNKNOWN              =  0,

    D3DFMT_R8G8B8               = 20,
    D3DFMT_A8R8G8B8             = 21,
    D3DFMT_X8R8G8B8             = 22,
    D3DFMT_R5G6B5               = 23,
    D3DFMT_X1R5G5B5             = 24,
    D3DFMT_A1R5G5B5             = 25,
    D3DFMT_A4R4G4B4             = 26,
    D3DFMT_R3G3B2               = 27,
    D3DFMT_A8                   = 28,
    D3DFMT_A8R3G3B2             = 29,
    D3DFMT_X4R4G4B4             = 30,
    D3DFMT_A2B10G10R10          = 31,
    D3DFMT_A8B8G8R8             = 32,
    D3DFMT_X8B8G8R8             = 33,
    D3DFMT_G16R16               = 34,
    D3DFMT_A2R10G10B10          = 35,
    D3DFMT_A16B16G16R16         = 36,

    D3DFMT_A8P8                 = 40,
    D3DFMT_P8                   = 41,

    D3DFMT_L8                   = 50,
    D3DFMT_A8L8                 = 51,
    D3DFMT_A4L4                 = 52,

    D3DFMT_V8U8                 = 60,
    D3DFMT_L6V5U5               = 61,
    D3DFMT_X8L8V8U8             = 62,
    D3DFMT_Q8W8V8U8             = 63,
    D3DFMT_V16U16               = 64,
    D3DFMT_A2W10V10U10          = 67,

    D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
    D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
    D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
    D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
    D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
    D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
    D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
    D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
    D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),

    D3DFMT_D16_LOCKABLE         = 70,
    D3DFMT_D32                  = 71,
    D3DFMT_D15S1                = 73,
    D3DFMT_D24S8                = 75,
    D3DFMT_D24X8                = 77,
    D3DFMT_D24X4S4              = 79,
    D3DFMT_D16                  = 80,

    D3DFMT_D32F_LOCKABLE        = 82,
    D3DFMT_D24FS8               = 83,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_D32_LOCKABLE         = 84,
    D3DFMT_S8_LOCKABLE          = 85,
#endif // !D3D_DISABLE_9EX

    D3DFMT_L16                  = 81,

    D3DFMT_VERTEXDATA           =100,
    D3DFMT_INDEX16              =101,
    D3DFMT_INDEX32              =102,

    D3DFMT_Q16W16V16U16         =110,

    D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),

    D3DFMT_R16F                 = 111,
    D3DFMT_G16R16F              = 112,
    D3DFMT_A16B16G16R16F        = 113,

    D3DFMT_R32F                 = 114,
    D3DFMT_G32R32F              = 115,
    D3DFMT_A32B32G32R32F        = 116,

    D3DFMT_CxV8U8               = 117,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_A1                   = 118,
    D3DFMT_A2B10G10R10_XR_BIAS  = 119,
    D3DFMT_BINARYBUFFER         = 199,
#endif // !D3D_DISABLE_9EX

    D3DFMT_FORCE_DWORD          =0x7fffffff
} D3DFORMAT;

설명

형식에는 여러 가지 유형이 있습니다.

모든 형식은 왼쪽에서 오른쪽, 가장 중요한 비트에서 가장 중요한 비트로 나열됩니다. 예를 들어 D3DFORMAT_ARGB 가장 중요한 비트 채널 A(알파)에서 가장 중요한 비트 채널 B(파란색)로 정렬됩니다. 표면 데이터를 트래버스할 때 데이터는 메모리에 가장 중요한 비트에서 가장 중요한 비트로 저장됩니다. 즉, 메모리의 채널 순서가 최적 비트(파란색)에서 가장 중요한 비트(알파)로 표시됩니다.

정의되지 않은 채널(G16R16, A8 등)이 포함된 형식의 기본값은 1입니다. 유일한 예외는 세 가지 색 채널에 대해 000으로 초기화된 A8 형식입니다.

비트의 순서는 가장 중요한 바이트에서 먼저 생성되므로 D3DFMT_A8L8 이 2비트 형식의 높은 바이트가 알파임을 나타냅니다. D3DFMT_D16 16비트 정수 값과 응용 프로그램 잠금 가능 표면을 나타냅니다.

하드웨어 공급업체에서 정의한 확장 형식의 식을 사용하도록 설정하고 잘 설정된 FOURCC 메서드를 포함하도록 픽셀 형식을 선택했습니다. Direct3D 런타임에서 이해하는 형식 집합은 D3DFORMAT에 의해 정의됩니다.

형식은 IHV(독립 하드웨어 공급업체)에서 제공하며 많은 FOURCC 코드가 나열되지 않습니다. 이 열거형의 형식은 런타임에 의해 승인된다는 측면에서 고유합니다. 즉, 참조 래스터라이저가 이러한 모든 형식에서 작동합니다. IHV 제공 형식은 개별 IHV에서 카드 카드 기준으로 지원됩니다.

BackBuffer 또는 표시 형식

이러한 형식은 백 버퍼 또는 디스플레이에 사용할 수 있는 유일한 형식입니다.

서식 백 버퍼 표시
A2R10G10B10 x x(전체 화면 모드에만 해당)
A8R8G8B8 x
X8R8G8B8 x x
A1R5G5B5 x
X1R5G5B5 x x
R5G6B5 x x

 

버퍼 형식

깊이, 스텐실, 꼭짓점 및 인덱스 버퍼에는 각각 고유한 형식이 있습니다.

버퍼 플래그 형식
D3DFMT_D16_LOCKABLE 70 16비트 z-버퍼 비트 깊이.
D3DFMT_D32 71 32비트 z-버퍼 비트 깊이.
D3DFMT_D15S1 73 16비트 z-버퍼 비트 깊이( 깊이 채널용으로 15비트 예약되고 1비트)는 스텐실 채널용으로 예약됩니다.
D3DFMT_D24S8 75 깊이 채널에 24비트, 스텐실 채널에 8비트 를 사용하는 32비트 z-버퍼 비트 깊이입니다.
D3DFMT_D24X8 77 깊이 채널에 24비트 사용 32비트 z-버퍼 비트 깊이.
D3DFMT_D24X4S4 79 깊이 채널에 24비트, 스텐실 채널에 4비트 를 사용하는 32비트 z 버퍼 비트 깊이입니다.
D3DFMT_D32F_LOCKABLE 82 깊이 값이 표준 IEEE 부동 소수점 숫자로 표시되는 잠금 가능한 형식입니다.
D3DFMT_D24FS8 83 24비트 깊이(24비트 부동 소수점 형식 - 20e4) 및 8비트 스텐실을 포함하는 잠글 수 없는 형식입니다.
D3DFMT_D32_LOCKABLE 84 잠금 가능한 32비트 깊이 버퍼입니다. Direct3D 9와 Direct3D 9Ex 간의 차이점: 이 플래그는 Direct3D 9Ex에서만 사용할 수 있습니다.
D3DFMT_S8_LOCKABLE 85 잠금 가능한 8비트 스텐실 버퍼입니다. Direct3D 9와 Direct3D 9Ex 간의 차이점: 이 플래그는 Direct3D 9Ex에서만 사용할 수 있습니다.
D3DFMT_D16 80 16비트 z-버퍼 비트 깊이.
D3DFMT_VERTEXDATA 100 꼭짓점 버퍼 표면을 설명합니다.
D3DFMT_INDEX16 101 16비트 인덱스 버퍼 비트 깊이.
D3DFMT_INDEX32 102 32비트 인덱스 버퍼 비트 깊이.

 

D3DFMT_D16_LOCKABLE 제외한 모든 깊이 스텐실 형식은 픽셀당 특정 비트 순서를 나타내지 않으며 드라이버는 표시된 깊이당 비트 수(스텐실 채널 아님)보다 더 많이 사용할 수 있습니다.

DXTn 압축 텍스처 형식

이러한 플래그는 압축된 텍스처에 사용됩니다.

DXTn 압축 텍스처 플래그 형식
D3DFMT_DXT1 MAKEFOURCC('D', 'X', 'T', '1') DXT1 압축 텍스처 형식
D3DFMT_DXT2 MAKEFOURCC('D', 'X', 'T', '2') DXT2 압축 텍스처 형식
D3DFMT_DXT3 MAKEFOURCC('D', 'X', 'T', '3') DXT3 압축 텍스처 형식
D3DFMT_DXT4 MAKEFOURCC('D', 'X', 'T', '4') DXT4 압축 텍스처 형식
D3DFMT_DXT5 MAKEFOURCC('D', 'X', 'T', '5') DXT5 압축 텍스처 형식

 

런타임에서는 표면 차원이 4의 배수가 아닌 한 애플리케이션이 DXTn 형식을 사용하여 표면을 만들 수 없습니다. 이는 오프스크린 일반 표면, 렌더링 대상, 2D 텍스처, 큐브 텍스처 및 볼륨 텍스처에 적용됩니다.

Floating-Point 형식

이러한 플래그는 부동 소수점 표면 형식에 사용됩니다. 채널당 이러한 16비트 형식을 s10e5 형식이라고도 합니다.

부동 소수점 플래그 형식
D3DFMT_R16F 111 빨간색 채널에 16비트 를 사용하는 16비트 부동 소수점 형식입니다.
D3DFMT_G16R16F 112 빨간색 채널에 16비트, 녹색 채널에 16비트 를 사용하는 32비트 부동 소수점 형식입니다.
D3DFMT_A16B16G16R16F 113 각 채널에 대해 16비트(알파, 파랑, 녹색, 빨간색)를 사용하는 64비트 float 형식입니다.

 

FOURCC 형식

FOURCC 형식의 데이터는 압축된 데이터입니다.

MAKEFOURCC

4자 코드를 생성하는 매크로는 다음과 같습니다.

#define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))

정의된 FOURCC 형식은 다음과 같습니다.

FOURCC 플래그 형식
D3DFMT_MULTI2_ARGB8 MAKEFOURCC('M','E','T','1') MultiElement 텍스처(압축되지 않음)
D3DFMT_G8R8_G8B8 MAKEFOURCC('G', 'R', 'G', 'B') YUY2(Y0U0, Y1V0, Y2U2 등)와 유사한 16비트 압축된 RGB 형식입니다. 색 값을 올바르게 나타내려면 픽셀 쌍이 필요합니다. 쌍의 첫 번째 픽셀에는 녹색 8비트(높은 8비트)와 8비트(낮은 8비트)가 포함됩니다. 두 번째 픽셀에는 녹색 8비트(상위 8비트) 및 파란색 8비트(낮은 8비트)가 포함됩니다. 두 픽셀은 빨간색과 파란색 구성 요소를 공유하며 각각에는 고유한 녹색 구성 요소(G0R0, G1B0, G2R2 등)가 있습니다. 텍스처 샘플러가 픽셀 셰이더를 조회할 때 색을 정규화하지 않습니다. 0.0f에서 255.0f 범위로 유지합니다. 이는 프로그래밍 가능한 모든 픽셀 셰이더 모델에 적용됩니다. 고정 함수 픽셀 셰이더의 경우 하드웨어는 0.f에서 1.f 범위로 정규화하고 기본적으로 YUY2 텍스처로 처리해야 합니다. 이 형식을 노출하는 하드웨어에는 D3DCAPS9 의 PixelShader1xMaxValue 멤버가 해당 범위를 처리할 수 있는 값으로 설정되어 있어야 합니다.
D3DFMT_R8G8_B8G8 MAKEFOURCC('R', 'G', 'B', 'G') UYVY(U0Y0, V0Y1, U2Y2 등)와 유사한 16비트 압축된 RGB 형식입니다. 색 값을 올바르게 나타내려면 픽셀 쌍이 필요합니다. 쌍의 첫 번째 픽셀에는 녹색 8비트(낮은 8비트)와 8비트(높은 8비트)가 포함됩니다. 두 번째 픽셀에는 녹색 8비트(낮은 8비트)와 파란색 8비트(높은 8비트)가 포함됩니다. 두 픽셀은 빨간색과 파란색 구성 요소를 공유하며 각각에는 고유한 녹색 구성 요소(R0G0, B0G1, R2G2 등)가 있습니다. 텍스처 샘플러가 픽셀 셰이더를 조회할 때 색을 정규화하지 않습니다. 0.0f에서 255.0f 범위로 유지합니다. 이는 프로그래밍 가능한 모든 픽셀 셰이더 모델에 적용됩니다. 고정 함수 픽셀 셰이더의 경우 하드웨어는 0.f에서 1.f 범위로 정규화하고 기본적으로 YUY2 텍스처로 처리해야 합니다. 이 형식을 노출하는 하드웨어에는 해당 범위를 처리할 수 있는 값으로 설정된 D3DCAPS9 의 PixelShader1xMaxValue 멤버가 있어야 합니다.
D3DFMT_UYVY MAKEFOURCC('U', 'Y', 'V', 'Y') UYVY 형식(PC98 규정 준수)
D3DFMT_YUY2 MAKEFOURCC('Y', 'U', 'Y', '2') YUY2 형식(PC98 규정 준수)

 

IEEE 형식

이러한 플래그는 부동 소수점 표면 형식에 사용됩니다. 채널당 이러한 32비트 형식을 s23e8 형식이라고도 합니다.

부동 소수점 플래그 형식
D3DFMT_R32F 114 빨간색 채널에 32비트 를 사용하는 32비트 float 형식입니다.
D3DFMT_G32R32F 115 빨간색 채널에 32비트, 녹색 채널에 32비트 를 사용하는 64비트 부동 소수점 형식입니다.
D3DFMT_A32B32G32R32F 116 각 채널에 대해 32비트(알파, 파랑, 녹색, 빨간색)를 사용하는 128비트 부동 소수점 형식입니다.

 

혼합 형식

혼합 형식의 데이터에는 서명되지 않은 데이터와 서명된 데이터의 조합이 포함될 수 있습니다.

혼합 형식 플래그 형식
D3DFMT_L6V5U5 61 광도에 6비트, v 및 사용자에 대해 각각 5비트 사용 광도를 사용하는 16비트 범프 맵 형식입니다.
D3DFMT_X8L8V8U8 62 각 채널에 대해 8비트의 광도를 사용하는 32비트 범프 맵 형식입니다.
D3DFMT_A2W10V10U10 67 알파에 2비트, w, v 및 사용자에 대해 각각 10비트씩 사용하는 32비트 범프 맵 형식입니다.

 

서명된 형식

서명된 형식의 데이터는 양수 및 음수일 수 있습니다. 서명된 형식은 (U), (V), (W) 및 (Q) 데이터의 조합을 사용합니다.

서명된 형식 플래그 형식
D3DFMT_V8U8 60 사용자 및 v 데이터에 대해 각각 8비트씩 사용하는 16비트 범프 맵 형식입니다.
D3DFMT_Q8W8V8U8 63 각 채널에 대해 8비트 를 사용하는 32비트 범프 맵 형식입니다.
D3DFMT_V16U16 64 각 채널에 대해 16비트 를 사용하는 32비트 범프 맵 형식입니다.
D3DFMT_Q16W16V16U16 110 각 구성 요소에 대해 16비트를 사용하는 64비트 범프 맵 형식입니다.
D3DFMT_CxV8U8 117 16비트 일반 압축 형식입니다. 텍스처 샘플러에서 C 채널을 계산합니다. C = sqrt(1 - U² - V²).

 

서명되지 않은 형식

서명되지 않은 형식의 데이터는 양수여야 합니다. 서명되지 않은 형식은 (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance 및 (P)alette 데이터의 조합을 사용합니다. 색상표 데이터는 색 팔레트를 인덱싱하는 데 사용되기 때문에 색 인덱싱된 데이터라고도 합니다.

서명되지 않은 형식 플래그 형식
D3DFMT_R8G8B8 20 채널당 8비트의 24비트 RGB 픽셀 형식입니다.
D3DFMT_A8R8G8B8 21 채널당 8비트의 알파를 사용하는 32비트 ARGB 픽셀 형식입니다.
D3DFMT_X8R8G8B8 22 32비트 RGB 픽셀 형식으로, 각 색에 대해 8비트 예약되어 있습니다.
D3DFMT_R5G6B5 23 빨강의 경우 5비트, 녹색의 경우 6비트, 파란색의 경우 5비트인 16비트 RGB 픽셀 형식입니다.
D3DFMT_X1R5G5B5 24 각 색에 대해 5비트 예약된 16비트 픽셀 형식입니다.
D3DFMT_A1R5G5B5 25 각 색에 대해 5비트 예약되고 알파용으로 1비트 예약된 16비트 픽셀 형식입니다.
D3DFMT_A4R4G4B4 26 각 채널에 대해 4비트의 16비트 ARGB 픽셀 형식입니다.
D3DFMT_R3G3B2 27 빨강 3비트, 녹색 3비트, 파랑 2비트 등을 사용하는 8비트 RGB 텍스처 형식입니다.
D3DFMT_A8 28 8비트 알파만 해당합니다.
D3DFMT_A8R3G3B2 29 알파에 8비트, 빨간색과 녹색의 경우 각각 3비트, 파란색에 2비트 를 사용하는 16비트 ARGB 텍스처 형식입니다.
D3DFMT_X4R4G4B4 30 각 색에 4비트 를 사용하는 16비트 RGB 픽셀 형식입니다.
D3DFMT_A2B10G10R10 31 각 색에 10비트, 알파에 2비트 를 사용하는 32비트 픽셀 형식입니다.
D3DFMT_A8B8G8R8 32 채널당 8비트의 알파를 사용하는 32비트 ARGB 픽셀 형식입니다.
D3DFMT_X8B8G8R8 33 32비트 RGB 픽셀 형식으로, 각 색에 대해 8비트 예약되어 있습니다.
D3DFMT_G16R16 34 녹색 및 빨간색에 대해 각각 16비트 를 사용하는 32비트 픽셀 형식입니다.
D3DFMT_A2R10G10B10 35 빨강, 녹색 및 파랑에 각각 10비트, 알파에 2비트씩 사용하는 32비트 픽셀 형식입니다.
D3DFMT_A16B16G16R16 36 각 구성 요소에 16비트를 사용하는 64비트 픽셀 형식입니다.
D3DFMT_A8P8 40 8비트 알파로 인덱싱된 8비트 색입니다.
D3DFMT_P8 41 인덱싱된 8비트 색입니다.
D3DFMT_L8 50 8비트 광도만.
D3DFMT_L16 81 16비트 광도만.
D3DFMT_A8L8 51 알파 및 광도에 각각 8비트 사용 16비트
D3DFMT_A4L4 52 알파 및 광도에 각각 4비트 사용 8비트.
D3DFMT_A1 118 1비트 단색. Direct3D 9와 Direct3D 9Ex 간의 차이점: 이 플래그는 Direct3D 9Ex에서만 사용할 수 있습니다.
D3DFMT_A2B10G10R10_XR_BIAS 119 2.8 편향 고정 지점. Direct3D 9와 Direct3D 9Ex 간의 차이점: 이 플래그는 Direct3D 9Ex에서만 사용할 수 있습니다.
D3DFMT_BINARYBUFFER 199 데이터에 내재된 형식이 없음을 나타내는 이진 형식입니다. Direct3D 9와 Direct3D 9Ex 간의 차이점: 이 플래그는 Direct3D 9Ex에서만 사용할 수 있습니다.

 

기타

이 플래그는 정의되지 않은 형식에 사용됩니다.

다른 플래그 형식
D3DFMT_UNKNOWN 0 Surface 형식을 알 수 없음

 

요구 사항

요구 사항
헤더
D3D9Types.h

추가 정보

Direct3D 열거형