テクスチャのアドレス指定モード
Direct3D アプリケーションは、任意のプリミティブの頂点テクスチャ座標を割り当てることができます。 通常、頂点に割り当てるテクスチャ座標 (u, v) は 0.0 ~ 1.0 (両端含む) の範囲です。 ただし、その範囲外のテクスチャ座標を割り当てることで、テクスチャリングの特殊効果を作成できます。 =
テクスチャのアドレス指定モードを設定すると、[0.0, 1.0] の範囲外にあるテクスチャ座標で Direct3D が実行することを制御できます。 たとえば、テクスチャがプリミティブ全体でタイル化されるようにアプリケーションにテクスチャのアドレス指定モードを設定させることができます。
Direct3D では、アプリケーションでテクスチャの折り返しを実行できます。 「テクスチャの折り返し」をご覧ください。
テクスチャの折り返しを有効にすると、[0.0, 1.0] の範囲外のテクスチャ座標は無効になり、その場合は延滞テクスチャ座標などのラスター化の動作は未定義になります。 テクスチャの折り返しを有効にすると、テクスチャのアドレス指定モードは使用されません。 テクスチャの折り返しが有効なときは、アプリケーションで 0.0 未満または 1.0 を上回るテクスチャ座標を指定しないように気をつけてください。
テクスチャのアドレス指定モードの概要
テクスチャのアドレス指定モード | 説明 |
---|---|
ラップ | すべての整数接合点でテクスチャを繰り返します。 |
ミラー | すべての整数境界でテクスチャをミラーリングします。 |
Clamp | テクスチャ座標を [0.0, 1.0] の範囲にクランプします。テクスチャを一度適用してから、エッジ ピクセルの色を付けます。 |
Border Color (境界線の色) | 境界線の色として知られる任意のカラーを、0.0 ~ 1.0 の範囲外のテクスチャ座標に対して使用します。 |
ラップ テクスチャ アドレス モード
ラップ テクスチャ アドレス モードでは、Direct3D はすべての整数接合点でテクスチャを繰り返します。
たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標を指定するとします。 テクスチャのアドレス指定モードを "Wrap" に設定すると、次の図に示すように、テクスチャは u 方向と v 方向の両方で 3 回適用されます。
このモードを、次のミラー テクスチャ アドレス モードと区別してください。
ミラー テクスチャ アドレス モード
ミラー テクスチャ アドレス モードでは、Direct3D はすべての整数境界でテクスチャをミラーリングします。
たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標を指定するとします。 テクスチャのアドレス指定モードを "Mirror" に設定すると、テクスチャは u 方向と v 方向の両方で 3 回適用されます。 次の図に示すように、これが適用される行と列はすべて、先行する行または列のミラー イメージです。
このモードを、前のラップ テクスチャ アドレス モードと区別してください。
クランプ テクスチャ アドレス モード
クランプ テクスチャ アドレス モードでは、Direct3D はテクスチャ座標を [0.0, 1.0] の範囲にクランプします。テクスチャを一度適用してから、エッジ ピクセルの色を付けます。
たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標をプリミティブの頂点に割り当てるとします。 テクスチャ アドレス指定モードを "Clamp" に設定すると、テクスチャは一度適用されます。 列の最上部と行の最後にあるピクセル カラーが、それぞれプリミティブの上と右に拡張されます。
次の図に、クランプされたテクスチャを示します。
境界線の色テクスチャ アドレス モード
境界線の色テクスチャ アドレス モードでは、Direct3D は境界線の色として知られる任意のカラーを、0.0 ~ 1.0 の範囲外のテクスチャ座標に対して使用します。
これを以下の図に示します。アプリケーションは赤い境界線を使用してプリミティブに適用されるテクスチャを指定しています。
デバイスの制限
一般に、0.0 ~ 1.0 の範囲外のテクスチャ座標も許可されますが、その範囲からテクスチャ座標がどの程度はずれることが可能かは、ほとんどがハードウェアの制限によって変わってきます。 デバイスの機能が取得されると、レンダリング デバイスは、デバイスに許可されているテクスチャ座標の全範囲の制限を伝えます。
たとえば、この値が 128 の場合、入力テクスチャ座標は -128.0 ~ +128.0 の範囲を保つ必要があります。 この範囲外のテクスチャ座標を持つ頂点を渡すことは無効です。 同じ制限は、自動的なテクスチャ座標生成とテクスチャ座標変換の結果として生成されるテクスチャ座標にも適用されます。
テクスチャの繰り返しの制限は、テクスチャ座標によってインデックスされるテクスチャのサイズによって異なります。 たとえば、テクスチャの寸法が 32 で、デバイスに許可されるテクスチャ座標の範囲が 512 とすると、実際の有効なテクスチャ座標範囲は 512/32 = 16 となり、このデバイスのテクスチャ座標は -16.0 ~ +16.0 の範囲内にある必要があります。
関連トピック