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 formato miembro 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:

Bandera 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 están premultiplicados 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 premultiplican mediante 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 formato 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 luminancia-only o luminance-plus-alpha; a continuación, se especifica la profundidad de bits en el miembro dwLuminanceBitCount.
DDPF_LUMINANCEPIXELS Los datos de luminancia en formato de píxeles son válidos. Use esta marca al colgar la luminancia, por ejemplo, superficies de mapa de golpes. A continuación, se especifica la máscara de bits para la parte de luminancia del píxel en el miembro dwBumpLuminanceBitMask.
DDPF_NOVEL_TEXTURE_FORMAT Indica un nuevo formato de superficie que el tiempo 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 color de 8 bits indizado.
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 YUV de 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 obtener 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 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.

Observaciones

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 independiente 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 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 el multiSampleCaps de en los formatos de galería de símbolos/profundidad para los que se puede admitir el muestreo múltiple. Esto permite que el tiempo 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 información adicional 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 al establecer los bits en wFlipMSTypes y wBltMSTypes. Para especificar la compatibilidad con un número específico de muestras por píxel, simplemente cambie 1 lógicamente por el valor adecuado del tipo enumerado de D3DMULTISAMPLE_TYPE menos 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 al blitting (modo de ventana) en X8R8G8B8 superficie, se notificará la siguiente entrada en la lista de formato 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 multisample con un búfer z, los formatos de búfer z notificados también deben incluir los ejemplos admitidos por píxel.

Requisitos

Requisito Valor
encabezado de ksmedia.h (incluya Ddraw.h)