D3DFORMAT

Define los distintos tipos de formatos de superficie.

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;

Comentarios

Hay varios tipos de formatos:

Todos los formatos se muestran de izquierda a derecha, bit más significativo a bit menos significativo. Por ejemplo, D3DFORMAT_ARGB se ordena del canal de bits más significativo A (alfa), al canal de bits menos significativo B (azul). Al recorrer datos de superficie, los datos se almacenan en memoria de bit menos significativo a bit más significativo, lo que significa que el orden del canal en la memoria es de bit menos significativo (azul) a bit más significativo (alfa).

El valor predeterminado de los formatos que contienen canales no definidos (G16R16, A8, etc.) es 1. La única excepción es el formato A8, que se inicializa en 000 para los tres canales de color.

El orden de los bits procede primero del byte más significativo, por lo que D3DFMT_A8L8 indica que el byte alto de este formato de 2 bytes es alfa. D3DFMT_D16 indica un valor entero de 16 bits y una superficie de bloqueo de aplicación.

Se han elegido formatos de píxeles para habilitar la expresión de formatos de extensión definidos por el proveedor de hardware, así como para incluir el método FOURCC bien establecido. El conjunto de formatos comprendidos por el entorno de ejecución de Direct3D se define mediante D3DFORMAT.

Tenga en cuenta que los formatos son proporcionados por proveedores de hardware independientes (IHD) y muchos códigos FOURCC no aparecen en la lista. Los formatos de esta enumeración son únicos en que son aprobados por el tiempo de ejecución, lo que significa que el rasterizador de referencia funcionará en todos estos tipos. Los formatos proporcionados por IHV serán compatibles con los IHV individuales en una tarjeta a tarjeta.

Formatos backBuffer o display

Estos formatos son los únicos formatos válidos para un búfer de reserva o una pantalla.

Formato Búfer de reserva Mostrar
A2R10G10B10 x x (solo modo de pantalla completa)
A8R8G8B8 x
X8R8G8B8 x x
A1R5G5B5 x
X1R5G5B5 x x
R5G6B5 x x

 

Formatos de búfer

Los búferes de profundidad, galería de símbolos, vértices e índices tienen formatos únicos.

Marcas de búfer Value Formato
D3DFMT_D16_LOCKABLE 70 Profundidad de búfer z de 16 bits.
D3DFMT_D32 71 Profundidad de bits de búfer z de 32 bits.
D3DFMT_D15S1 73 Profundidad de bits de búfer z de 16 bits donde se reservan 15 bits para el canal de profundidad y 1 bit se reserva para el canal de galería de símbolos.
D3DFMT_D24S8 75 Profundidad de bits de búfer z de 32 bits con 24 bits para el canal de profundidad y 8 bits para el canal de galería de símbolos.
D3DFMT_D24X8 77 Profundidad de bits de búfer z de 32 bits con 24 bits para el canal de profundidad.
D3DFMT_D24X4S4 79 Profundidad de bits de búfer z de 32 bits con 24 bits para el canal de profundidad y 4 bits para el canal de galería de símbolos.
D3DFMT_D32F_LOCKABLE 82 Formato bloqueable en el que el valor de profundidad se representa como un número estándar de punto flotante IEEE.
D3DFMT_D24FS8 83 Un formato no bloqueable que contiene 24 bits de profundidad (en un formato de punto flotante de 24 bits - 20e4) y 8 bits de galería de símbolos.
D3DFMT_D32_LOCKABLE 84 Un búfer de profundidad de 32 bits bloqueable. Diferencias entre Direct3D 9 y Direct3D 9Ex: Esta marca solo está disponible en Direct3D 9Ex.
D3DFMT_S8_LOCKABLE 85 Un búfer de galería de símbolos de 8 bits bloqueable. Diferencias entre Direct3D 9 y Direct3D 9Ex: Esta marca solo está disponible en Direct3D 9Ex.
D3DFMT_D16 80 Profundidad de búfer z de 16 bits.
D3DFMT_VERTEXDATA 100 Describe una superficie de búfer de vértices.
D3DFMT_INDEX16 101 Profundidad de bits del búfer de índice de 16 bits.
D3DFMT_INDEX32 102 Profundidad de bits del búfer de índice de 32 bits.

 

Todos los formatos de galería de símbolos de profundidad excepto D3DFMT_D16_LOCKABLE indican ningún orden de bits determinado por píxel y el controlador puede consumir más que el número indicado de bits por canal de profundidad (pero no el canal de galería de símbolos).

Formatos de textura comprimidos DXTn

Estas marcas se usan para texturas comprimidas:

Marcas de textura comprimida de DXTn Value Formato
D3DFMT_DXT1 MAKEFOURCC('D', 'X', 'T', '1') Formato de textura de compresión DXT1
D3DFMT_DXT2 MAKEFOURCC('D', 'X', 'T', '2') Formato de textura de compresión DXT2
D3DFMT_DXT3 MAKEFOURCC('D', 'X', 'T', '3') Formato de textura de compresión DXT3
D3DFMT_DXT4 MAKEFOURCC('D', 'X', 'T', '4') Formato de textura de compresión DXT4
D3DFMT_DXT5 MAKEFOURCC('D', 'X', 'T', '5') Formato de textura de compresión DXT5

 

El tiempo de ejecución no permitirá que una aplicación cree una superficie con un formato DXTn a menos que las dimensiones de superficie sean múltiples de 4. Esto se aplica a superficies sin formato offscreen, destinos de representación, texturas 2D, texturas de cubo y texturas de volumen.

formatos de Floating-Point

Estas marcas se usan para formatos de superficie de punto flotante. Estos formatos de 16 bits por canal también se conocen como formatos s10e5.

Marcas de punto flotante Value Formato
D3DFMT_R16F 111 Formato float de 16 bits con 16 bits para el canal rojo.
D3DFMT_G16R16F 112 Formato float de 32 bits con 16 bits para el canal rojo y 16 bits para el canal verde.
D3DFMT_A16B16G16R16F 113 Formato float de 64 bits con 16 bits para cada canal (alfa, azul, verde, rojo).

 

Formatos FOURCC

Los datos en formato FOURCC son datos comprimidos.

MAKEFOURCC

A continuación se muestra una macro para generar códigos de cuatro caracteres:

#define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))

Estos son los formatos FOURCC definidos:

Marcas FOURCC Value Formato
D3DFMT_MULTI2_ARGB8 MAKEFOURCC('M','E','T','1') Textura MultiElement (no comprimida)
D3DFMT_G8R8_G8B8 MAKEFOURCC('G', 'R', 'G', 'B') Un formato RGB empaquetado de 16 bits análogo a YUY2 (Y0U0, Y1V0, Y2U2, etc.). Requiere un par de píxeles para representar correctamente el valor de color. El primer píxel del par contiene 8 bits de verde (en los 8 bits altos) y 8 bits de rojo (en los 8 bits bajos). El segundo píxel contiene 8 bits de verde (en los 8 bits altos) y 8 bits de azul (en los 8 bits bajos). Juntos, los dos píxeles comparten los componentes rojo y azul, mientras que cada uno tiene un componente verde único (G0R0, G1B0, G2R2, etc.). El muestreador de texturas no normaliza los colores al buscar en un sombreador de píxeles; permanecen en el intervalo de 0,0f a 255,0f. Esto es cierto para todos los modelos de sombreador de píxeles programables. Para el sombreador de píxeles de función fijo, el hardware debe normalizarse en el rango de 0.f a 1.f y tratarlo esencialmente como la textura YUY2. El hardware que expone este formato debe tener el miembro PixelShader1xMaxValue de D3DCAPS9 establecido en un valor capaz de controlar ese intervalo.
D3DFMT_R8G8_B8G8 MAKEFOURCC('R', 'G', 'B', 'G') Un formato RGB empaquetado de 16 bits análogo a UYVY (U0Y0, V0Y1, U2Y2, etc.). Requiere un par de píxeles para representar correctamente el valor de color. El primer píxel del par contiene 8 bits de verde (en los 8 bits bajos) y 8 bits de rojo (en los 8 bits altos). El segundo píxel contiene 8 bits de verde (en los 8 bits bajos) y 8 bits de azul (en los 8 bits altos). Juntos, los dos píxeles comparten los componentes rojo y azul, mientras que cada uno tiene un componente verde único (R0G0, B0G1, R2G2, etc.). El muestreador de texturas no normaliza los colores al buscar en un sombreador de píxeles; permanecen en el intervalo de 0,0f a 255,0f. Esto es cierto para todos los modelos de sombreador de píxeles programables. Para el sombreador de píxeles de función fijo, el hardware debe normalizarse en el rango de 0.f a 1.f y tratarlo esencialmente como la textura YUY2. El hardware que expone este formato debe tener el miembro PixelShader1xMaxValue de D3DCAPS9 establecido en un valor capaz de controlar ese intervalo.
D3DFMT_UYVY MAKEFOURCC('U', 'Y', 'V', 'Y') Formato UYVY (cumplimiento de PC98)
D3DFMT_YUY2 MAKEFOURCC('Y', 'U', 'Y', '2') Formato YUY2 (cumplimiento de PC98)

 

Formatos IEEE

Estas marcas se usan para formatos de superficie de punto flotante. Estos formatos de 32 bits por canal también se conocen como formatos s23e8.

Marcas de punto flotante Value Formato
D3DFMT_R32F 114 Formato float de 32 bits con 32 bits para el canal rojo.
D3DFMT_G32R32F 115 Formato float de 64 bits con 32 bits para el canal rojo y 32 bits para el canal verde.
D3DFMT_A32B32G32R32F 116 Formato float de 128 bits con 32 bits para cada canal (alfa, azul, verde, rojo).

 

Formatos mixtos

Los datos en formatos mixtos pueden contener una combinación de datos sin firmar y datos firmados.

Marcas de formato mixto Value Formato
D3DFMT_L6V5U5 61 Formato de mapa de 16 bits con luminancia usando 6 bits para luminancia, y 5 bits cada uno para v y usted.
D3DFMT_X8L8V8U8 62 Formato de mapa de 32 bits con luminancia usando 8 bits para cada canal.
D3DFMT_A2W10V10U10 67 Formato de mapa de 32 bits con 2 bits para alfa y 10 bits cada uno para w, v y usted.

 

Formatos firmados

Los datos en un formato firmado pueden ser positivos y negativos. Los formatos firmados usan combinaciones de datos (U), (V), (W) y (Q).

Marcas de formato firmadas Value Formato
D3DFMT_V8U8 60 Formato de mapa de 16 bits con 8 bits cada uno para usted y datos v.
D3DFMT_Q8W8V8U8 63 Formato de mapa de 32 bits con 8 bits para cada canal.
D3DFMT_V16U16 64 Formato de mapa de 32 bits con 16 bits para cada canal.
D3DFMT_Q16W16V16U16 110 Formato de mapa de 64 bits con 16 bits para cada componente.
D3DFMT_CxV8U8 117 Formato de compresión normal de 16 bits. El muestreador de textura calcula el canal C de: C = sqrt(1 - U² - V²).

 

Formatos sin firmar

Los datos en un formato sin firmar deben ser positivos. Los formatos sin firmar usan combinaciones de (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance y (P)alette data. Los datos de la paleta también se conocen como datos indexados de color porque los datos se usan para indexar una paleta de colores.

Marcas de formato sin firmar Value Formato
D3DFMT_R8G8B8 20 Formato de píxel RGB de 24 bits con 8 bits por canal.
D3DFMT_A8R8G8B8 21 Formato de píxel ARGB de 32 bits con alfa, usando 8 bits por canal.
D3DFMT_X8R8G8B8 22 Formato de píxel RGB de 32 bits, donde se reservan 8 bits para cada color.
D3DFMT_R5G6B5 23 Formato de píxel RGB de 16 bits con 5 bits para rojo, 6 bits para verde y 5 bits para azul.
D3DFMT_X1R5G5B5 24 Formato de píxeles de 16 bits donde se reservan 5 bits para cada color.
D3DFMT_A1R5G5B5 25 Formato de píxeles de 16 bits donde se reservan 5 bits para cada color y 1 bit se reserva para alfa.
D3DFMT_A4R4G4B4 26 Formato de píxel ARGB de 16 bits con 4 bits para cada canal.
D3DFMT_R3G3B2 27 Formato de textura RGB de 8 bits con 3 bits para rojo, 3 bits para verde y 2 bits para azul.
D3DFMT_A8 28 Solo alfa de 8 bits.
D3DFMT_A8R3G3B2 29 Formato de textura ARGB de 16 bits con 8 bits para alfa, 3 bits cada uno para rojo y verde, y 2 bits para azul.
D3DFMT_X4R4G4B4 30 Formato de píxel RGB de 16 bits con 4 bits para cada color.
D3DFMT_A2B10G10R10 31 Formato de píxeles de 32 bits con 10 bits para cada color y 2 bits para alfa.
D3DFMT_A8B8G8R8 32 Formato de píxel ARGB de 32 bits con alfa, usando 8 bits por canal.
D3DFMT_X8B8G8R8 33 Formato de píxel RGB de 32 bits, donde se reservan 8 bits para cada color.
D3DFMT_G16R16 34 Formato de píxeles de 32 bits con 16 bits cada uno para verde y rojo.
D3DFMT_A2R10G10B10 35 Formato de píxeles de 32 bits con 10 bits para rojo, verde y azul, y 2 bits para alfa.
D3DFMT_A16B16G16R16 36 Formato de píxeles de 64 bits con 16 bits para cada componente.
D3DFMT_A8P8 40 Color de 8 bits indexado con 8 bits de alfa.
D3DFMT_P8 41 Color de 8 bits indizado.
D3DFMT_L8 50 Solo luminancia de 8 bits.
D3DFMT_L16 81 Solo luminancia de 16 bits.
D3DFMT_A8L8 51 16 bits usando 8 bits cada uno para alfa y luminancia.
D3DFMT_A4L4 52 8 bits usando 4 bits cada uno para alfa y luminancia.
D3DFMT_A1 118 Monocromo de 1 bit. Diferencias entre Direct3D 9 y Direct3D 9Ex: Esta marca solo está disponible en Direct3D 9Ex.
D3DFMT_A2B10G10R10_XR_BIAS 119 Punto fijo sesgado 2.8. Diferencias entre Direct3D 9 y Direct3D 9Ex: Esta marca solo está disponible en Direct3D 9Ex.
D3DFMT_BINARYBUFFER 199 Formato binario que indica que los datos no tienen ningún tipo inherente. Diferencias entre Direct3D 9 y Direct3D 9Ex: Esta marca solo está disponible en Direct3D 9Ex.

 

Otros

Esta marca se usa para formatos no definidos.

Otras marcas Value Formato
D3DFMT_UNKNOWN 0 El formato surface es desconocido

 

Requisitos

Requisito Value
Encabezado
D3D9Types.h

Consulte también

Enumeraciones de Direct3D