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 형식을 알 수 없음 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
추가 정보