Share via


存取資源

有數種方式可以存取 資源。 不論為何,Direct3D 保證會針對任何超出界限存取的資源傳回零。

存取位元組位移

您可以使用位元組位移來存取兩個新的緩衝區類型:

依索引存取

資源類型可以使用索引來參考資源中的特定位置。 請考慮此範例:

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

本範例會將儲存在myTexture 2D 紋理資源中pos位置的 4 個浮點值指派給myVar變數。

注意

以這種方式存取紋理的預設值為 mipmap 層級零, (最詳細的層級) 。

 

注意

「float4 myVar = myTexture[pos];」 行相當於 「float4 myVar = myTexture.Load (uint3 (pos,0) ) ;」。 依索引存取是新的 HLSL 語法增強功能。

 

注意

2010 年 6 月版 DirectX SDK 和更新版本中的編譯器可讓您為 位元組位址緩衝區以外的所有資源類型編制索引。

 

注意

2010 年 6 月編譯器及更新版本可讓您宣告本機資源變數。 您可以將 myTexture () 之類的全域定義資源指派給這些變數,並使用它們與全域對應專案相同的方式。

 

依 Mips 方法存取

紋理物件有 mips 方法 (例如 Texture2D.mips) ,可用來指定 mipmap 層級。 本範例會讀取 2D 紋理中 mipmap 層級 2 上儲存在 (7,16) 的色彩:

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

這是 2010 年 6 月編譯器和更新版本的增強功能。 「myTexture.mips[2][uint2 (x,y) ]」 運算式相當於 「myTexture.Load (uint3 (x,y,2) ) 」。

計算著色器概觀