Compartir a través de


Texturas de varios elementos (Direct3D 9)

Las texturas tradicionales se consideran texturas de un solo elemento. Las texturas de varios elementos permiten a las aplicaciones escribir simultáneamente en varios elementos de una textura del sombreador de píxeles. El resultado en el siguiente paso de representación es que una aplicación puede usar uno o varios de los elementos como textura de un solo elemento, es decir, como entradas para el sombreador de píxeles. Estos elementos adicionales se pueden considerar como un almacén temporal para los resultados intermedios que se usarán en un paso posterior por la aplicación.

La primera generación de hardware que expone esta característica tiene las siguientes restricciones:

  • Todas las superficies de textura de varios elementos se asignarán automáticamente. Esta limitación se aborda tratando como un nuevo tipo de formato de superficie con varios canales RGBA intercalados.
  • Todos los elementos de la textura de varios elementos pueden tener la misma profundidad de bits. Esta limitación se expresa por el nombre de los nuevos formatos de superficie.
  • Una textura de varios elementos no puede ser la principal o visible. En otras palabras, solo debe estar fuera de la pantalla. Esta limitación se expresa mediante la enumeración de formato de superficie.
  • No se permite ninguna dithering, alfa test, fogging, blending, raster-op o enmascaramiento. No se realiza ningún procesamiento de sombreador posterior a píxeles, excepto la prueba z-test y la galería de símbolos.
  • La textura no puede ser un mapa mip. Se producirá un error en la creación de la cadena mip.
  • No se puede establecer el mismo elemento como una textura al mismo tiempo que es un destino de representación. Sin embargo, los distintos elementos de la misma superficie de textura de varios elementos pueden ser simultáneamente texturas y destinos de representación.
  • No se admite ningún suavizado de contorno.
  • Las superficies de textura de varios elementos, cuando se usan como textura, no se pueden filtrar. Esta limitación se puede comprobar mediante CheckDeviceFormat.
  • Las superficies de textura de varios elementos no se pueden bloquear.
  • Se puede usar simultáneamente más de una superficie de textura de varios elementos asignando cada una a varias fases, igual que con texturas normales.
  • Las superficies de textura de varios elementos admiten la conversión gamma de 2.2 a 1.0 en una operación de lectura, al igual que con otros formatos de textura.
  • Algunas de las implementaciones no aplican la máscara de escritura de salida (D3DRS_COLORWRITEENABLE). Aquellos que pueden tener máscaras de escritura de color independientes. Esto se expresa mediante un nuevo bit de funcionalidad. El número de máscaras de escritura de color independientes disponibles será igual al número máximo de elementos de los que el dispositivo es capaz.
  • Borrar borra todos los elementos de la textura de varios elementos que se establece como destino de representación.

El uso de texturas de varios elementos sigue estos pasos:

  1. Las aplicaciones detectan la compatibilidad con esta característica comprobando la disponibilidad de formatos de textura de varios elementos.
  2. La aplicación crea estas superficies mediante una llamada a CreateTexture.
  3. La aplicación establece la superficie como destino de representación mediante la llamada SetRenderTarget . El sombreador de píxeles proporciona salida a las superficies mediante la instrucción mov - ps .
  4. Se llama a SetTexture para establecer una superficie de textura de varios elementos en una fase determinada. Al igual que con otras texturas, se permite establecer la misma superficie en varias fases a la vez.
  5. Se llama a SetSamplerState para establecer D3DSAMP_ELEMENTINDEX en el número de elemento adecuado en la textura de varios elementos de la que se muestra el sampler. El valor predeterminado de este estado es 0, lo que significa que las texturas que no son de varios elementos funcionarán. Establecer este estado en un número inadecuado da como resultado un comportamiento indefinido: si la textura de varios elementos es solo dos elementos de ancho, pero se pide al sampler que muestree desde el cuarto elemento, por ejemplo.

Compatibilidad de la API

A continuación se muestra un resumen de los elementos de la API que admiten texturas de varios elementos:

  • El formato de superficie D3DFMT_MULTI2_ARGB8 expresa la naturaleza intercalada del formato.

  • El D3DSAMP_ELEMENTINDEX estado del sampler indica qué índice de elemento se va a usar.

  • Los siguientes estados de representación admiten texturas de varios elementos:

    • D3DRS_COLORWRITEENABLE1
    • D3DRS_COLORWRITEENABLE2
    • D3DRS_COLORWRITEENABLE3

    D3DRS_COLORWRITEENABLE se aplica al destino de representación (o elemento) cero.

  • La marca D3DPMISCCAPS_INDEPENDENTWRITEMASKS indica que el dispositivo admite máscaras de escritura independientes para varias texturas de elementos o varios destinos de representación.

Canalización de píxeles