Compartilhar via


Estrutura DDPIXELFORMAT (ksmedia.h)

A estrutura DDPIXELFORMAT descreve o formato de pixel de um objeto DirectDrawSurface .

Sintaxe

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;

Membros

dwSize

Especifica o tamanho em bytes da estrutura DDPIXELFORMAT. O driver deve inicializar esse membro antes que a estrutura seja usada.

Somente DirectX 9.0 e versões posteriores. Especifica, na entrada, a versão do runtime do Microsoft DirectX que está sendo usada pelo aplicativo. Esse membro é definido como DD_RUNTIME_VERSION, que é 0x00000900 para DirectX 9.0, no membro de formato da estrutura DD_GETFORMATDATA para uma consulta D3DGDI2_TYPE_GETFORMAT.

dwFlags

Indica um conjunto de sinalizadores que especificam sinalizadores de controle opcionais. Esse membro é um OR bit a bit de qualquer um dos seguintes valores:

Sinalizador Significado
DDPF_ALPHA O formato de pixel descreve uma superfície somente alfa.
DDPF_ALPHAPIXELS A superfície tem informações de canal alfa no formato de pixel.
DDPF_ALPHAPREMULT Os componentes de cor no pixel são pré-multiplicados pelo valor alfa no pixel. Se esse sinalizador estiver definido, o sinalizador DDPF_ALPHAPIXELS também deverá ser definido. Se esse sinalizador não estiver definido, mas o sinalizador DDPF_ALPHAPIXELS estiver definido, os componentes de cor no formato de pixel não serão pré-multiplicados por alfa. Nesse caso, os componentes de cor devem ser multiplicados pelo valor alfa no momento em que uma operação de mesclagem alfa é executada.
DDPF_BUMPDUDV Os dados de dUdV do mapa de colisão no formato de pixel são válidos.
DDPF_BUMPHEIGHT Os dados de altura do mapa de colisão no formato de pixel são válidos.
DDPF_COMPRESSED A superfície aceita dados de pixel no formato especificado e os compacta durante a operação de gravação.
DDPF_D3DFORMAT Indica uma entrada de funcionalidade de formato DirectX 8.0 e posterior na lista de formato de textura. Esse sinalizador não é exposto a aplicativos.
DDPF_FOURCC O código FOURCC é válido.
DDPF_LUMINANCE Os dados de luminância no formato de pixel são válidos. Use esse sinalizador para superfícies luminance-only ou luminance-plus-alpha; a profundidade do bit é especificada no membro dwLuminanceBitCount .
DDPF_LUMINANCEPIXELS Os dados de luminância no formato de pixel são válidos. Use esse sinalizador ao desligar a luminância, por exemplo, superfícies de bumpmap. A máscara de bits para a parte de luminância do pixel é especificada no membro dwBumpLuminanceBitMask .
DDPF_NOVEL_TEXTURE_FORMAT Indica um novo formato de superfície que o runtime pode não expor a todos os aplicativos.
DDPF_PALETTEINDEXED1 A superfície é indexada por cor de 1 bit.
DDPF_PALETTEINDEXED2 A superfície é indexada por cores de 2 bits.
DDPF_PALETTEINDEXED4 A superfície é indexada por cores de 4 bits.
DDPF_PALETTEINDEXED8 A superfície é indexada por cores de 8 bits.
DDPF_PALETTEINDEXEDTO8 A superfície é uma cor de 1, 2 ou 4 bits indexada a uma paleta de 8 bits.
DDPF_RGB Os dados RGB na estrutura de formato de pixel são válidos.
DDPF_RGBTOYUV A superfície aceita dados RGB e os converte durante a operação de gravação em dados YUV. O formato dos dados a serem gravados está contido na estrutura de formato de pixel. O sinalizador DDPF_RGB está definido.
DDPF_STENCILBUFFER A superfície codifica informações de estêncil e profundidade em cada pixel do buffer z.
DDPF_YUV Os dados YUV na estrutura de formato de pixel são válidos.
DDPF_ZBUFFER O formato de pixel descreve uma superfície somente de buffer z.
DDPF_ZPIXELS A superfície está no formato RGBZ.

dwFourCC

Especifica um código de formato de superfície, incluindo qualquer um dos códigos no tipo enumerado D3DFORMAT. Alguns códigos FOURCC fazem parte de D3DFORMAT. Para obter mais informações sobre D3DFORMAT, consulte a documentação do SDK. Os fornecedores de hardware também podem definir e fornecer códigos de formato específicos para seu hardware.

dwRGBBitCount

Especifica o número de bits RGB por pixel (4, 8, 16, 24 ou 32).

dwYUVBitCount

Especifica o número de bits YUV por pixel.

dwZBufferBitDepth

Especifica a profundidade do bit do buffer Z (8, 16, 24 ou 32 bits).

dwAlphaBitDepth

Especifica a profundidade de bits do canal Alfa.

dwRBitMask

Especifica a máscara para bits vermelhos.

dwYBitMask

Especifica a máscara para bits Y.

dwGBitMask

Especifica a máscara para bits verdes.

dwUBitMask

Especifica a máscara para bits U.

dwBBitMask

Especifica a máscara para bits azuis.

dwVBitMask

Especifica a máscara para bits V.

dwRGBAlphaBitMask

Máscara para o canal alfa.

dwYUVAlphaBitMask

Máscara para o canal alfa.

dwRGBZBitMask

Máscara para o canal Z.

dwYUVZBitMask

Máscara para o canal Z.

Comentários

O runtime do DirectX 8.0 e posterior impõe as seguintes regras na lista de operações (op):

  • Somente um Endian-ness (grande ou pequeno) para qualquer formato DS é permitido, por exemplo, D15S1 ou S1D15, não independente de outros bits.

  • Uma lista deve incluir apenas D3DFORMAT_OP_DISPLAYMODE para exatamente um formato de 16bpp (por exemplo, não deve enumerar 5:5:5 e 5:6:5).

  • Uma lista não deve conter nenhum formato alfa com D3DFORMAT_OP_DISPLAYMODE ou conjunto de D3DFORMAT_OP_3DACCELLERATION.

  • O sinalizador D3DFORMAT_OP_3DACCELLERATION só pode ser definido quando o sinalizador de D3DFORMAT_OP_DISPLAYMODE também está definido.

Se o driver der suporte a um D16 bloqueável, ele deverá relatar D3DFMT_D16_LOCKABLE na lista de operações; caso contrário, ele deve relatar D3DFMT_D16.

Os drivers que dão suporte a multisampling devem preencher o MultiSampleCaps nos formatos de Profundidade/Estêncil para os quais a multiamostragem pode ter suporte. Isso permite que o runtime detecte se um driver dá suporte a multisampling para combinações de destino de renderização e formatos de buffer Z. Para obter informações adicionais sobre as restrições relacionadas ao stretch blt multisampling, consulte a descrição do limite de D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE nas rastercaps contidas na estrutura D3DCAPS8 na documentação do SDK.

O tipo enumerado D3DMULTISAMPLE_TYPE definido em d3d8types.h é usado ao definir os bits em wFlipMSTypes e wBltMSTypes. Para especificar o suporte para um número específico de amostras por pixel, basta alternar logicamente 1 pelo valor apropriado do D3DMULTISAMPLE_TYPE tipo enumerado menor 1 e OU para o campo apropriado (wFlipMSTypes e wBltMSTypes).

Por exemplo, se o driver der suporte a duas e quatro amostras por pixel ao inverter (modo de tela inteira) e quatro amostras por pixel ao blitting (modo com janelas) em X8R8G8B8 superfície, a entrada a seguir será relatada na lista de formato de superfície.

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));

Não é necessário especificar 1 << (D3DMULTISAMPLE_NONE - 1) ao relatar formatos. Supõe-se que qualquer formato relatado também possa ser usado sem várias amostras. Se o hardware der suporte à renderização de várias amostras com um buffer z, os formatos de buffer z relatados também deverão incluir os exemplos com suporte por pixels.

Requisitos

Requisito Valor
Cabeçalho ksmedia.h (inclua Ddraw.h)