紋理定址模式
您的 Direct3D 應用程式可將紋理座標指派給任何原始物件的任何頂點。 通常,可指派給頂點的 u 和 v 紋理座標皆介於 0.0 到 1.0 (包含頭尾) 的範圍之間。 不過,只要將紋理座標指派至該範圍之外,您就能建立特定的特殊紋理效果。 .
您可以設定紋理定址模式,藉此控制 Direct3D 處理位於 [0.0, 1.0] 範圍以外之紋理座標的方式。 舉例來說,您可以將應用程式設為紋理定址模式,好讓紋理在原始物件中並排。
Direct3D 可讓應用程式執行紋理包裝。 詳情請參閱紋理包裝。
有效地啟用紋理包裝,即可讓位於 [0.0, 1.0] 範圍以外的紋理座標失效,而在這個情況下,違法紋理座標等點陣化行為都不會遭到定義。 啟用紋理包裝時,將不會使用紋理定址模式。 啟用紋理包裝時,請確認您的應用程式並未指定低於 0.0 或高於 1.0 的紋理座標。
紋理定址模式的摘要
紋理定址模式 | 描述 |
---|---|
換行 | 在每個整數連接點上重複紋理。 |
鏡像 | 在每個整數界限上鏡像紋理。 |
夾鉗 | 將您的紋理座標限縮在 [0.0, 1.0] 範圍內;限縮模式會套用紋理一次,然後抹除邊緣像素的色彩。 |
框線色彩 | 將任意框線色彩用於 0.0 至 1.0 (包含頭尾) 範圍以外的任何紋理座標。 |
包裝紋理定址模式
包裝紋理定址模式可讓 Direct3D 在每個整數連接點上重複紋理。
舉例來說,假設您的應用程式建立了方形原始物件,並為其指定 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 和 (3.0,0.0) 的紋理座標。 將紋理定址模式設為「包裝」,就會導致紋理在 u 方向和 v 方向各套用三次,如下圖所示。
這會與下方的鏡像紋理定址模式形成對比。
鏡像紋理定址模式
鏡像紋理定址模式會讓 Direct3D 在每個整數界限上鏡像紋理。
舉例來說,假設您的應用程式建立了方形原始物件,並為其指定 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 和 (3.0,0.0) 的紋理座標。 將紋理定址模式設為「鏡像」,就會導致紋理在 u 方向和 v 方向各套用三次。 所套用的每個間隔資料列和資料行,都會是前一個資料列或資料行的鏡像影像,如下圖所示。
這會與先前的包裝紋理定址模式形成對比。
限縮紋理定址模式
限縮紋理定址模式可讓 Direct3D 將您的紋理座標限縮在 [0.0, 1.0] 範圍內;限縮模式會套用紋理一次,然後抹除邊緣像素的色彩。
假設應用程式建立了方形原始物件,並為原始物件的頂點指派了紋理座標 (0.0,0.0)、(0.0,3.0)、(3.0,3.0) 和 (3.0,0.0)。 將紋理定址模式設為「限縮」,就會導致紋理僅套用一次。 資料行最上方和資料列結尾處的像素色彩,都會各自延伸至原始物件的最上方和右側。
限縮紋理會如下圖所示。
框線色彩紋理定址模式
框線色彩紋理定址模式可讓 Direct3D 將任意色彩 (也就是所謂的框線色彩) 用於 0.0 至 1.0 (包含頭尾) 範圍以外的任何紋理座標。
在下圖中,應用程式指定將紋理套用至使用紅色框線的原始物件。
裝置限制
儘管系統通常允許介於 0.0 到 1.0 範圍 (包含頭尾) 以外的紋理座標,硬體限制往往會影響紋理座標在該範圍以外的適用距離。 擷取裝置功能時,轉譯裝置會告知該裝置所允許的紋理座標完整範圍限制。
舉例來說,如果該值為 128,則輸入紋理座標必須位於 -128.0 至 +128.0 的範圍內。 傳遞紋理座標位於上述範圍以外的頂點,將不具任何效果。 相同的限制也適用於自動紋理座標產生和紋理座標轉換所產生的紋理座標。
紋理重複限制則會視由紋理座標編制索引的紋理大小而定。 在這個情況下,假設紋理維度維 32,而裝置允許的紋理座標範圍為 512,實際的有效紋理座標範圍就會是 512/32 = 16,因此,這個裝置的紋理座標必須位於 -16.0 至 +16.0 的範圍內。
相關主題