Compartir a través de


Acceso a recursos

Hay varias maneras de acceder a los recursos. Independientemente de, Direct3D garantiza que devuelve cero para cualquier recurso al que se tenga acceso fuera de los límites.

Desplazamiento de bytes de acceso

Se puede acceder a dos nuevos tipos de búfer mediante un desplazamiento de bytes:

Acceso por índice

Los tipos de recursos pueden usar un índice para hacer referencia a una ubicación específica del recurso. Considere este ejemplo:

uint2 pos;
Texture2D<float4> myTexture;
float4 myVar = myTexture[pos];

En este ejemplo se asignan los 4 valores flotantes almacenados en el elemento de textura ubicado en la posición pos del recurso de textura myTexture 2D a la variable myVar .

Nota

El valor predeterminado para acceder a una textura de esta manera es el nivel mipmap cero (el nivel más detallado).

 

Nota

La línea "float4 myVar = myTexture[pos];" equivale a "float4 myVar = myTexture.Load(uint3(pos,0));". El acceso por índice es una nueva mejora de la sintaxis HLSL.

 

Nota

El compilador de la versión de junio de 2010 del SDK de DirectX y versiones posteriores le permite indexar todos los tipos de recursos, excepto los búferes de direcciones de bytes.

 

Nota

El compilador de junio de 2010 y versiones posteriores le permite declarar variables de recursos locales. Puede asignar recursos definidos globalmente (como myTexture) a estas variables y usarlos de la misma manera que sus homólogos globales.

 

Access by Mips (método)

Los objetos texture tienen un método mips (por ejemplo, Texture2D.mips), que puede usar para especificar el nivel de mapa mip. En este ejemplo se lee el color almacenado en (7,16) en el nivel de mapa mip 2 en una textura 2D:

uint x = 7;
uint y = 16;
float4 myColor = myTexture.mips[2][uint2(x,y)];

Se trata de una mejora del compilador de junio de 2010 y versiones posteriores. La expresión "myTexture.mips[2][uint2(x,y)]" equivale a "myTexture.Load(uint3(x,y,2)))".

Información general del sombreador de proceso