Texture (objeto)

En Direct3D 10, se especifican los muestreadores y texturas de forma independiente; El muestreo de textura se implementa mediante un objeto templated-texture. Este objeto templated-texture tiene un formato específico, devuelve un tipo específico e implementa varios métodos.

Diferencias entre Direct3D9 y Direct3D10:

  • En Direct3D 9, los muestreadores están enlazados a texturas específicas.
  • En Direct3D 10, las texturas y los muestreadores son objetos independientes. Cada objeto de textura con plantilla implementa métodos de muestreo de textura que toman la textura y el muestreador como parámetros de entrada.

Esta es la sintaxis para crear todos los objetos de textura (excepto los objetos de muestreo múltiple).

Object1 [<Type>] Name;

Los objetos de muestreo múltiple (Texture2DMS y Texture2DMSArray) requieren que el tamaño de textura se indique explícitamente y se exprese como el número de muestras.

Object2 [<Type, Samples>] Name;

Parámetros

Elemento Descripción
Objeto
Objeto de textura. Debe ser uno de los siguientes tipos.
Tipo Object1 Descripción
Buffer Buffer
Texture1D Textura 1D
Texture1DArray Matriz de texturas 1D
Texture2D Textura 2D
Texture2DArray Matriz de texturas 2D
Texture3D Textura 3D
TextureCube Textura del cubo
TextureCubeArray Matriz de texturas de cubo
Tipo Object2 Descripción
Texture2DMS Textura multimuestreo 2D
Texture2DMSArray Matriz de texturas multimuestreo 2D

  1. El tipo buffer admite la mayoría de los métodos de objeto de textura excepto GetDimensions.
  2. TextureCubeArray está disponible en el modelo de sombreador 4.1 o superior.
  3. El modelo de sombreador 4.1 está disponible en Direct3D 10.1 o superior.

Tipo

Opcional. Cualquier tipo HLSL escalar o tipo HLSL vectorial, rodeado por corchetes angulares. El tipo predeterminado es float4.

Nombre

Cadena ASCII que especifica el nombre del objeto de textura.

Muestras

Número de muestras (oscila entre 1 y 128).

Ejemplo 1

Este es un ejemplo de declaración de un objeto de textura.

Texture2D <float4> MyTex;

Texture2DMS <float4, 128> MyMSTex;

Métodos de objeto Texture

Cada objeto de textura implementa ciertos métodos; esta es la tabla que muestra todos los métodos. Consulte la página de referencia de cada método para ver qué objetos pueden usar ese método.

Texture (método) Descripción vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
CalculateLevelOfDetail Calcule el LOD y devuelva un resultado fijado. x
CalculateLevelOfDetailUnclamped Calcule el LOD y devuelva un resultado no declarado. x
Reunir Obtiene los cuatro ejemplos (solo componente rojo) que se usarían para la interpolación bilineal al realizar un muestreo de una textura. x x x
GetDimensions Obtenga la dimensión de textura para un nivel de mapa mip especificado. x x x x x x
GetDimensions (MultiSample) Obtenga la dimensión de textura para un nivel de mapa mip especificado. x x x
GetSamplePosition Obtenga la posición del ejemplo especificado. x x x
Cargar Cargar datos sin ningún filtrado ni muestreo. x x x x x x
Carga (Multisample) Cargar datos sin ningún filtrado o muestreo. x x x x
Ejemplo Muestree una textura. x x
SampleBias Muestree una textura, después de aplicar el valor de sesgo al nivel de mapa mip. x x
SampleCmp Muestree una textura con un valor de comparación para rechazar muestras. x x
SampleCmpLevelZero Muestree una textura (solo nivel de mapa mip 0), usando un valor de comparación para rechazar muestras. x x x x x x
SampleGrad Muestree una textura mediante un degradado para influir en la forma en que se calcula la ubicación de la muestra. x x x x x x
SampleLevel Muestree una textura en el nivel de mapa mip especificado. x x x x x x

Tipo de valor devuelto

El tipo de valor devuelto de un método de objeto de textura es float4, a menos que se especifique lo contrario, con la excepción de los objetos de textura con alias multimuestreo que siempre necesitan el tipo y el recuento de muestras especificados. El tipo de valor devuelto es el mismo que el tipo de recurso de textura (DXGI_FORMAT). En otras palabras, puede ser cualquiera de los siguientes tipos.

Tipo Description
FLOAT Float de 32 bits (consulte Reglas de punto flotante para conocer las diferencias de IEEE float)
int Entero de 32 bits con signo
unsigned int Entero sin signo de 32 bits
snorm Float de 32 bits en el intervalo -1 a 1 inclusive (consulte Reglas de punto flotante para conocer las diferencias entre IEEE float)
unorm Float de 32 bits en el intervalo de 0 a 1 inclusive (consulte Reglas de punto flotante para conocer las diferencias de IEEE float)
cualquier tipo de textura o estructura El número de componentes devueltos debe estar comprendido entre 1 y 3 inclusive.

Además, el tipo de valor devuelto puede ser cualquier tipo de textura, incluida una estructura, pero debe ser inferior a 4 componentes, como un tipo float1 que devuelve un componente.

Valores predeterminados para los componentes que faltan en una textura

El valor predeterminado de los componentes que faltan en un tipo de recurso de textura es cero para cualquier componente excepto el componente alfa (A); el valor predeterminado de la A que falta es uno. La forma en que este aparece en el sombreador depende del tipo de recurso de textura. Toma la forma del primer componente con tipo que realmente está presente en el tipo de recurso de textura (empezando por la izquierda en orden RGBA). Si este formulario es UNORM o FLOAT, el valor predeterminado de la A que falta es 1.0f. Si el formulario es SINT o UINT, el valor predeterminado de la A que falta es 0x1.

Por ejemplo, cuando un sombreador lee el tipo de recurso de textura de DXGI_FORMAT_R24_UNORM_X8_TYPELESS , los valores predeterminados de G y B son cero y el valor predeterminado de A es 1,0f; cuando un sombreador lee el tipo de recurso de textura de DXGI_FORMAT_R16G16_UINT , el valor predeterminado de B es cero y el valor predeterminado de A es 0x00000001; cuando un sombreador lee el tipo de recurso de textura de DXGI_FORMAT_R16_SINT , los valores predeterminados de G y B son cero y el valor predeterminado de A es 0x00000001.

Ejemplo 2

Este es un ejemplo de muestreo de textura mediante un método de textura.

sampler MySamp;
Texture2D <float4> MyTex;
 
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
    return MyTex.Sample( MySamp, TexCoords[0] ));
}

Modelo de sombreador mínimo

Este objeto se admite en los siguientes modelos de sombreador.

Modelo de sombreador Compatible
Modelo de sombreador 4 y modelos de sombreador superiores

Vea también

Modelo de sombreador 4