다음을 통해 공유


DDPIXELFORMAT 구조체(ksmedia.h)

DDPIXELFORMAT 구조체는 DirectDrawSurface 개체의 픽셀 형식을 설명합니다.

구문

typedef struct _DDPIXELFORMAT {
  DWORD dwSize;
  DWORD dwFlags;
  DWORD dwFourCC;
  union {
    DWORD dwRGBBitCount;
    DWORD dwYUVBitCount;
    DWORD dwZBufferBitDepth;
    DWORD dwAlphaBitDepth;
  };
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
  };
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
  };
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
  };
  union {
    DWORD dwRGBAlphaBitMask;
    DWORD dwYUVAlphaBitMask;
    DWORD dwRGBZBitMask;
    DWORD dwYUVZBitMask;
  };
} DDPIXELFORMAT, *LPDDPIXELFORMAT;

멤버

dwSize

DDPIXELFORMAT 구조체의 크기(바이트)를 지정합니다. 구조체를 사용하려면 먼저 드라이버가 이 멤버를 초기화해야 합니다.

DirectX 9.0 이상 버전만 해당합니다. 입력 시 애플리케이션에서 사용되는 Microsoft DirectX 런타임의 버전을 지정합니다. 이 멤버는 directX 9.0에 대해 0x00000900 DD_RUNTIME_VERSION D3DGDI2_TYPE_GETFORMAT 쿼리에 대한 DD_GETFORMATDATA 구조체의 형식 멤버로 설정됩니다.

dwFlags

선택적 컨트롤 플래그를 지정하는 플래그 집합을 나타냅니다. 이 멤버는 다음 값 중 비트 OR입니다.

플래그 의미
DDPF_ALPHA 픽셀 형식은 알파 전용 표면을 설명합니다.
DDPF_ALPHAPIXELS 표면에는 픽셀 형식의 알파 채널 정보가 있습니다.
DDPF_ALPHAPREMULT 픽셀의 색 구성 요소는 픽셀의 알파 값으로 미리 곱합니다. 이 플래그를 설정하면 DDPF_ALPHAPIXELS 플래그도 설정해야 합니다. 이 플래그가 설정되지 않았지만 DDPF_ALPHAPIXELS 플래그가 설정된 경우 픽셀 형식의 색 구성 요소는 알파로 미리 곱하지 않습니다. 이 경우 색 구성 요소는 알파 혼합 작업이 수행될 때 알파 값을 곱해야 합니다.
DDPF_BUMPDUDV 픽셀 형식의 범프 맵 dUdV 데이터는 유효합니다.
DDPF_BUMPHEIGHT 픽셀 형식의 범프 맵 높이 데이터가 유효합니다.
DDPF_COMPRESSED Surface는 지정된 형식의 픽셀 데이터를 허용하고 쓰기 작업 중에 압축합니다.
DDPF_D3DFORMAT 텍스처 형식 목록의 DirectX 8.0 이상 형식 기능 항목을 나타냅니다. 이 플래그는 애플리케이션에 노출되지 않습니다.
DDPF_FOURCC FOURCC 코드가 유효합니다.
DDPF_LUMINANCE 픽셀 형식의 광도 데이터는 유효합니다. 광도 전용 또는 광도 플러스 알파 표면에 이 플래그를 사용합니다. 비트 깊이는 dwLuminanceBitCount 멤버에 지정됩니다.
DDPF_LUMINANCEPIXELS 픽셀 형식의 광도 데이터는 유효합니다. 예를 들어 범프맵 표면과 같이 광도를 끌 때 이 플래그를 사용합니다. 픽셀의 광도 부분에 대한 비트 마스크는 dwBumpLuminanceBitMask 멤버에 지정됩니다.
DDPF_NOVEL_TEXTURE_FORMAT 런타임이 모든 애플리케이션에 노출되지 않을 수 있는 새 표면 형식을 나타냅니다.
DDPF_PALETTEINDEXED1 표면이 인덱싱된 1비트 색입니다.
DDPF_PALETTEINDEXED2 표면이 인덱싱된 2비트 색입니다.
DDPF_PALETTEINDEXED4 표면은 인덱싱된 4비트 색입니다.
DDPF_PALETTEINDEXED8 표면이 인덱싱된 8비트 색입니다.
DDPF_PALETTEINDEXEDTO8 표면은 8비트 색상표로 인덱싱된 1비트, 2비트 또는 4비트 색입니다.
DDPF_RGB 픽셀 형식 구조의 RGB 데이터는 유효합니다.
DDPF_RGBTOYUV Surface는 RGB 데이터를 수락하고 쓰기 작업 중에 YUV 데이터로 변환합니다. 쓸 데이터의 형식은 픽셀 형식 구조에 포함됩니다. DDPF_RGB 플래그가 설정됩니다.
DDPF_STENCILBUFFER 표면은 z-버퍼의 각 픽셀에서 스텐실 및 깊이 정보를 인코딩합니다.
DDPF_YUV 픽셀 형식 구조의 YUV 데이터는 유효합니다.
DDPF_ZBUFFER 픽셀 형식은 z 버퍼 전용 표면을 설명합니다.
DDPF_ZPIXELS 표면은 RGBZ 형식입니다.

dwFourCC

D3DFORMAT 열거형 형식의 코드를 포함하는 표면 형식 코드를 지정합니다. 일부 FOURCC 코드는 D3DFORMAT 일부입니다. D3DFORMAT 대한 자세한 내용은 SDK 설명서를 참조하세요. 하드웨어 공급업체는 하드웨어와 관련된 형식 코드를 정의하고 제공할 수도 있습니다.

dwRGBBitCount

픽셀당 RGB 비트 수(4, 8, 16, 24 또는 32)를 지정합니다.

dwYUVBitCount

픽셀당 YUV 비트 수를 지정합니다.

dwZBufferBitDepth

Z 버퍼 비트 깊이(8, 16, 24 또는 32비트)를 지정합니다.

dwAlphaBitDepth

알파 채널 비트 깊이를 지정합니다.

dwRBitMask

빨간색 비트의 마스크를 지정합니다.

dwYBitMask

Y 비트에 대한 마스크를 지정합니다.

dwGBitMask

녹색 비트의 마스크를 지정합니다.

dwUBitMask

U 비트에 대한 마스크를 지정합니다.

dwBBitMask

파란색 비트의 마스크를 지정합니다.

dwVBitMask

V 비트에 대한 마스크를 지정합니다.

dwRGBAlphaBitMask

알파 채널에 대한 마스크입니다.

dwYUVAlphaBitMask

알파 채널에 대한 마스크입니다.

dwRGBZBitMask

Z 채널에 대한 마스크입니다.

dwYUVZBitMask

Z 채널에 대한 마스크입니다.

설명

DirectX 8.0 이상 런타임은 작업(op) 목록에 다음 규칙을 적용합니다.

  • DS 형식(예: D15S1 또는 S1D15)에 대한 Endian-ness(크거나 작은)만 허용되며 다른 비트와 무관하지는 않습니다.

  • 목록은 정확히 하나의 16bpp 형식에 대한 D3DFORMAT_OP_DISPLAYMODE 포함해야 합니다(예: 5:5:5 및 5:6:5를 열거해서는 안 됨).

  • 목록에는 D3DFORMAT_OP_DISPLAYMODE 또는 D3DFORMAT_OP_3DACCELLERATION 설정된 알파 형식이 포함되어서는 안 됩니다.

  • D3DFORMAT_OP_3DACCELLERATION 플래그는 D3DFORMAT_OP_DISPLAYMODE 플래그도 설정된 경우에만 설정할 수 있습니다.

드라이버가 잠금 가능한 D16을 지원하는 경우 작업 목록에 D3DFMT_D16_LOCKABLE 보고해야 합니다. 그렇지 않으면 D3DFMT_D16 보고해야 합니다.

다중 샘플링을 지원하는 드라이버는 다중 샘플링을 지원할 수 있는 깊이/스텐실 형식으로 MultiSampleCaps 를 입력해야 합니다. 이렇게 하면 런타임에서 드라이버가 렌더링 대상 및 Z 버퍼 형식의 조합에 대해 다중 샘플링을 지원하는지 검색할 수 있습니다. 스트레치 Blt 다중 샘플링과 관련된 제한 사항에 대한 자세한 내용은 SDK 설명서의 D3DCAPS8 구조에 포함된 래스터캡의 D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE 캡에 대한 설명을 참조하세요.

d3d8types.h에 정의된 열거형 형식 D3DMULTISAMPLE_TYPE wFlipMSTypeswBltMSTypes에서 비트를 설정할 때 사용됩니다. 픽셀당 특정 수의 샘플에 대한 지원을 지정하려면 논리적으로 1을 D3DMULTISAMPLE_TYPE 열거형 형식의 적절한 값으로 이동하고 이를 적절한 필드(wFlipMSTypes 및 wBltMSTypes )로 이동하면 됩니다.

예를 들어 드라이버가 대칭 이동 시 픽셀당 2개 및 4개의 샘플을 모두 지원하는 경우(전체 화면 모드) 및 X8R8G8B8 화면에서 블리팅할 때 픽셀당 4개의 샘플(창 모드)을 지원하는 경우 다음 항목이 표면 형식 목록에 보고됩니다.

DDPIXELFORMAT ddpf;
ZeroMemory(&ddpf, sizeof(ddpf));
ddpf.dwSize       = sizeof(DDPIXELFORMAT);
ddpf.dwFlags      = DDPF_D3DFORMAT;
ddpf.dwFourCC     = D3DFMT_X8R8G8B8;
ddpf.dwOperations = D3DFORMAT_OP_DISPLAYMODE |
                    D3DFORMAT_OP_3DACCELERATION;
ddpf.MultiSampleCaps.wFlipMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1))
                                  | (1 << (D3DMULTISAMPLE_2_SAMPLES âˆ' 1));
ddpf.MultiSampleCaps.wBltMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1));

형식을 보고할 때 1 << (D3DMULTISAMPLE_NONE - 1)을 지정할 필요는 없습니다. 보고된 모든 형식을 다중 샘플링 없이 사용할 수도 있다고 가정합니다. 하드웨어가 z 버퍼를 사용하여 다중 샘플 렌더링을 지원하는 경우 보고된 z-버퍼 형식에는 지원되는 픽셀당 샘플도 포함되어야 합니다.

요구 사항

요구 사항
헤더 ksmedia.h(Ddraw.h 포함)