Compartir a través de


Estructura DDPIXELFORMAT (ksmedia.h)

La estructura DDPIXELFORMAT describe el formato de píxel de un objeto DirectDrawSurface .

Sintaxis

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;

Miembros

dwSize

Especifica el tamaño en bytes de la estructura DDPIXELFORMAT. El controlador debe inicializar este miembro antes de usar la estructura.

DirectX 9.0 y versiones posteriores solo. Especifica, en la entrada, la versión del entorno de ejecución de Microsoft DirectX que usa la aplicación. Este miembro se establece en DD_RUNTIME_VERSION, que es 0x00000900 para DirectX 9.0, en el miembro de formato de la estructura de DD_GETFORMATDATA para una consulta de D3DGDI2_TYPE_GETFORMAT.

dwFlags

Indica un conjunto de marcas que especifican marcas de control opcionales. Este miembro es un OR bit a bit de cualquiera de los siguientes valores:

Marca Significado
DDPF_ALPHA El formato de píxel describe una superficie de solo alfa.
DDPF_ALPHAPIXELS La superficie tiene información del canal alfa en formato de píxel.
DDPF_ALPHAPREMULT Los componentes de color del píxel se multiplican previamente por el valor alfa del píxel. Si se establece esta marca, también se debe establecer la marca DDPF_ALPHAPIXELS. Si no se establece esta marca, pero se establece la marca de DDPF_ALPHAPIXELS, los componentes de color del formato de píxel no se multiplican previamente por alfa. En este caso, los componentes de color deben multiplicarse por el valor alfa en el momento en que se realiza una operación de combinación alfa.
DDPF_BUMPDUDV Los datos de dUdV de mapa de aumento en el formato de píxeles son válidos.
DDPF_BUMPHEIGHT Los datos de alto del mapa de aumento en el formato de píxeles son válidos.
DDPF_COMPRESSED La superficie acepta datos de píxeles en el formato especificado y los comprime durante la operación de escritura.
DDPF_D3DFORMAT Indica una entrada de funcionalidad de formato DirectX 8.0 y versiones posteriores en la lista de formatos de textura. Esta marca no se expone a las aplicaciones.
DDPF_FOURCC El código FOURCC es válido.
DDPF_LUMINANCE Los datos de luminancia en formato de píxeles son válidos. Utilice esta marca para superficies solo de luminancia o luminancia-plus-alfa; a continuación, la profundidad de bits se especifica en el miembro dwLuminanceBitCount .
DDPF_LUMINANCEPIXELS Los datos de luminancia en formato de píxeles son válidos. Utilice esta marca al colgar la luminancia, por ejemplo, superficies de mapa de golpes. A continuación, la máscara de bits de la parte de la luminancia del píxel se especifica en el miembro dwBumpLuminanceBitMask .
DDPF_NOVEL_TEXTURE_FORMAT Indica un nuevo formato de superficie que el entorno de ejecución podría no exponer a todas las aplicaciones.
DDPF_PALETTEINDEXED1 La superficie tiene un color de 1 bits indizado.
DDPF_PALETTEINDEXED2 La superficie tiene un color de 2 bits indizado.
DDPF_PALETTEINDEXED4 La superficie tiene un color de 4 bits indizado.
DDPF_PALETTEINDEXED8 La superficie tiene un índice de color de 8 bits.
DDPF_PALETTEINDEXEDTO8 La superficie tiene un color de 1, 2 o 4 bits indexado a una paleta de 8 bits.
DDPF_RGB Los datos RGB de la estructura de formato de píxeles son válidos.
DDPF_RGBTOYUV La superficie acepta datos RGB y los traduce durante la operación de escritura en datos YUV. El formato de los datos que se van a escribir se encuentra en la estructura de formato de píxel. Se establece la marca DDPF_RGB.
DDPF_STENCILBUFFER La superficie codifica la galería de símbolos y la información de profundidad en cada píxel del búfer z.
DDPF_YUV Los datos de YUV en la estructura de formato de píxeles son válidos.
DDPF_ZBUFFER El formato de píxel describe una superficie de solo búfer z.
DDPF_ZPIXELS La superficie está en formato RGBZ.

dwFourCC

Especifica un código de formato de superficie que incluye cualquiera de los códigos del tipo enumerado D3DFORMAT. Algunos códigos FOURCC forman parte de D3DFORMAT. Para más información sobre D3DFORMAT, consulte la documentación del SDK. Los proveedores de hardware también pueden definir y proporcionar códigos de formato específicos de su hardware.

dwRGBBitCount

Especifica el número de bits RGB por píxel (4, 8, 16, 24 o 32).

dwYUVBitCount

Especifica el número de bits YUV por píxel.

dwZBufferBitDepth

Especifica la profundidad de bits del búfer Z (8, 16, 24 o 32 bits).

dwAlphaBitDepth

Especifica la profundidad del bit de canal Alfa.

dwRBitMask

Especifica la máscara para bits rojos.

dwYBitMask

Especifica la máscara para bits Y.

dwGBitMask

Especifica la máscara para bits verdes.

dwUBitMask

Especifica la máscara para bits U.

dwBBitMask

Especifica la máscara para bits azules.

dwVBitMask

Especifica la máscara para los bits V.

dwRGBAlphaBitMask

Máscara para el canal alfa.

dwYUVAlphaBitMask

Máscara para el canal alfa.

dwRGBZBitMask

Máscara para el canal Z.

dwYUVZBitMask

Máscara para el canal Z.

Comentarios

El entorno de ejecución de DirectX 8.0 y versiones posteriores impone las siguientes reglas en la lista de operaciones (op):

  • Solo se permite una endian-ness (grande o pequeña) para cualquier formato DS, por ejemplo, D15S1 o S1D15, no ambos independientes de otros bits.

  • Una lista solo debe incluir D3DFORMAT_OP_DISPLAYMODE para exactamente un formato de 16bpp (por ejemplo, no debe enumerar 5:5:5 y 5:6:5).

  • Una lista no debe contener ningún formato alfa con D3DFORMAT_OP_DISPLAYMODE o D3DFORMAT_OP_3DACCELLERATION establecido.

  • La marca D3DFORMAT_OP_3DACCELLERATION solo se puede establecer cuando también se establece la marca de D3DFORMAT_OP_DISPLAYMODE.

Si el controlador admite un D16 bloqueable, debe notificar D3DFMT_D16_LOCKABLE en la lista de operaciones; de lo contrario, debe notificar D3DFMT_D16.

Los controladores que admiten el muestreo múltiple deben rellenar MultiSampleCaps en los formatos de galería de símbolos/profundidad para los que se puede admitir el muestreo múltiple. Esto permite que el entorno de ejecución detecte si un controlador admite el muestreo múltiple para combinaciones de formatos de destino de representación y búfer Z. Para obtener más información sobre las restricciones relacionadas con el muestreo múltiple de blt extendido, consulte la descripción de D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE cap en los rástercaps incluidos en la estructura de D3DCAPS8 en la documentación del SDK.

El tipo enumerado D3DMULTISAMPLE_TYPE definido en d3d8types.h se usa al establecer los bits en wFlipMSTypes y wBltMSTypes. Para especificar la compatibilidad con un número específico de muestras por píxel, basta con cambiar lógicamente 1 por el valor adecuado del tipo enumerado D3DMULTISAMPLE_TYPE menor 1 y OR en el campo adecuado (wFlipMSTypes y wBltMSTypes).

Por ejemplo, si el controlador admite dos y cuatro muestras por píxel al voltear (modo de pantalla completa) y cuatro muestras por píxel cuando se bifurque (modo de ventana) en X8R8G8B8 superficie, se notificará la siguiente entrada en la lista de formatos de superficie.

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

No es necesario especificar 1 << (D3DMULTISAMPLE_NONE - 1) al notificar formatos. Se supone que cualquier formato notificado también se puede usar sin muestreo múltiple. Si el hardware admite la representación multimuestra con un búfer z, los formatos de búfer z notificados también deben incluir los ejemplos admitidos por píxeles.

Requisitos

Requisito Valor
Header ksmedia.h (incluya Ddraw.h)