共用方式為


Direct3D 11 中的紋理簡介

紋理資源是專為儲存紋素而設計的結構化的資料集合。 紋素代表可由管線讀取或寫入之紋理的最小單位。 紋理與緩衝區不同的是,紋理可以在著色器單位讀取時由紋理取樣器進行篩選。 紋理類型會影響紋理的篩選方式。 每個像素都包含 1 到 4 個分量,以 DXGI_FORMAT 列舉所定義的其中一種 DXGI 格式排列。

紋理被建立為具有已知大小的結構化資源。 不過,在建立資源時,每個紋理都可以是類型化或無類型化,只要在紋理綁定至管線時,透過檢視完整指定類型即可。

紋理類型

有數種類型的紋理:1D、2D、3D,每個紋理都可以使用或不使用Mipmap來建立。 Direct3D 11 也支援紋理陣列和多重取樣紋理。

1D 紋理

最簡單的格式 1D 紋理包含可使用單一紋理座標尋址的紋理數據:它可以可視化為紋素陣列,如下圖所示。 1D 紋理是由 ID3D11Texture1D 介面表示。

1d 紋理圖例

每個紋素包含若干色彩元件,取決於所儲存的數據格式。 新增更多複雜度,您可以使用Mipmap層級建立1D紋理,如下圖所示。

具有 mipmap 層級的一維紋理的 圖

Mipmap 等級是一種紋理,其尺寸是小於其上方等級的二的冪次。 最上層包含最詳細數據,每個後續層級都較小。 若為 1D mipmap,最小層級包含一個像素。 此外,MIP 層級最終會降低到 1:1。 針對奇數大小的紋理產生Mipmap時,下一個較低層級一律會是偶數大小(除非最低層級達到1)。 例如,該圖表顯示一個 5x1 紋理,其下一個較低層級是 2x1 紋理,而這個層級的下一個(也是最後一個)mip 層級是 1x1 大小的紋理。 層級是由稱為 LOD 的索引來識別,該索引可用來在呈現不接近相機的幾何時存取較小的紋理。

1D 紋理陣列

Direct3D 11 也支援紋理陣列。 1D 紋理陣列也會以 ID3D11Texture1D 介面表示。 1D 紋理的陣列在概念上看起來像下圖。

1d 紋理陣列的圖例

這個紋理陣列包含三個紋理。 這三個紋理中的每一個紋理寬度為5(也就是第一層中的元素數目)。 每個紋理也包含 3 層 Mipmap。

Direct3D 中的所有紋理陣列都是紋理的同質數位列;這表示紋理陣列中的每個紋理都必須具有相同的數據格式和大小(包括紋理寬度和Mipmap層級的數目)。 您可以建立不同大小的紋理陣列,只要每個陣列中的所有紋理都符合大小。

2D 紋理和 2D 紋理陣列

Texture2D 資源包含一個由像素組成的 2D 網格。 每個紋素都是由 u、 v 向量尋址。 因為它是紋理資源,因此可能包含Mipmap層級和子資源。 2D 紋理是由 ID3D11Texture2D 介面表示。 完整填入的 2D 紋理資源看起來像下圖。

2D 紋理資源的圖例

此紋理資源包含具有三個Mipmap層級的單一3x5紋理。

2D 紋理陣列資源是 2D 紋理的同質數位列;也就是說,每個紋理都有相同的數據格式和維度(包括 mipmap 層級)。 2D 紋理陣列也會以 ID3D11Texture2D 介面表示。 其配置與 1D 紋理數位類似,不同之處在於紋理現在包含 2D 數據,如下圖所示。

2d 紋理陣列的圖例

此紋理陣列包含三個紋理:每個紋理都是 3x5,具有兩個 Mipmap 層級。

使用 2D 紋理陣組做為紋理立方體

立方體紋理是一個包含6個紋理的2D紋理陣列,每個立方體面都有一個紋理。 完整填充的紋理立方體如下示意圖所示。

的 2D 紋理陣列圖示,代表一個紋理立方體

包含 6 個紋理的 2D 紋理陣列,可以在具有立方紋理內建函式的著色器內讀取,這些紋理會系結至具備立方紋理檢視的管線。 紋理立方體是由著色器訪問,並使用從紋理立方體中心指向的 3D 向量來定位。

注意

您使用 10_1 功能層級建立的裝置, 和更新版本可以支援紋理立方體陣列,其中紋理數目等於數位中紋理立方體數目六倍。 您使用 10_0 功能層級建立的裝置 僅支援六張臉部的單一紋理立方體。 此外,Direct3D 11 不支援部分 Cubemap。

 

3D 紋理

3D 紋理資源(也稱為體積紋理)包含 3D 畫素的體積。 因為它是紋理資源,所以可能包含Mipmap層級。 3D 紋理是由 ID3D11Texture3D 介面表示。 完整填入的 3D 紋理看起來像下圖。

3d 紋理資源 的圖例

當 3D 紋理的 Mipmap 切片作為轉譯目標輸出被繫結時(使用轉譯目標檢視),其行為與具有 n 個切片的 2D 紋理陣列相同。 從幾何著色器階段中選擇特定渲染切片的方法是,將輸出資料的標量元件宣告為系統值 SV_RenderTargetArrayIndex。

沒有 3D 紋理陣列的概念;因此,3D 紋理子資源是單一Mipmap層級。

紋理