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:
- Formatos backBuffer o display
- Formatos de búfer
- Formatos de textura comprimidos DXTn
- Formatos de punto flotante
- Formatos FOURCC
- Formatos IEEE
- Formatos mixtos
- Formatos firmados
- Formatos sin firmar
- Otros
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 |
|
Consulte también