テクスチャのアドレス指定モードTexture addressing modes

Direct3D アプリケーションは、任意のプリミティブの頂点テクスチャ座標を割り当てることができます。Your Direct3D application can assign texture coordinates to any vertex of any primitive. 通常、頂点に割り当てるテクスチャ座標 (u, v) は 0.0 ~ 1.0 (両端含む) の範囲です。Typically, the u- and v-texture coordinates that you assign to a vertex are in the range of 0.0 to 1.0 inclusive. ただし、その範囲外のテクスチャ座標を割り当てることで、テクスチャリングの特殊効果を作成できます。However, by assigning texture coordinates outside that range, you can create certain special texturing effects. ..

Direct3D の外部にあるテクスチャ座標を使用して動作を制御する、 [0.0, 1.0]範囲テクスチャのアドレス指定モードに設定します。You control what Direct3D does with texture coordinates that are outside the [0.0, 1.0] range by setting the texture addressing mode. たとえば、テクスチャがプリミティブ全体でタイル化されるようにアプリケーションにテクスチャのアドレス指定モードを設定させることができます。For instance, you can have your application set the texture addressing mode so that a texture is tiled across a primitive.

Direct3D では、アプリケーションでテクスチャの折り返しを実行できます。Direct3D enables applications to perform texture wrapping. テクスチャの折り返し」をご覧ください。See Texture wrapping.

外側のテクスチャ座標は、テクスチャを効果的に折り返しを有効にすると、 [0.0, 1.0]範囲が無効か、および動作のラスタライズなど滞納テクスチャ座標はここでします。Enabling texture wrapping effectively makes texture coordinates outside the [0.0, 1.0] range invalid, and the behavior for rasterizing such delinquent texture coordinates is undefined in this case. テクスチャの折り返しを有効にすると、テクスチャのアドレス指定モードは使用されません。When texture wrapping is enabled, texture addressing modes are not used. テクスチャの折り返しが有効なときは、アプリケーションで 0.0 未満または 1.0 を上回るテクスチャ座標を指定しないように気をつけてください。Take care that your application does not specify texture coordinates lower than 0.0 or higher than 1.0 when texture wrapping is enabled.

テクスチャのアドレッシング モードの概要Summary of the texture addressing modes

テクスチャのアドレス指定モードTexture addressing mode 説明Description
Wrap (ラップ)Wrap すべての整数接合点でテクスチャを繰り返します。Repeats the texture on every integer junction.
Mirror (ミラー)Mirror すべての整数境界でテクスチャをミラーリングします。Mirrors the texture at every integer boundary.
Clamp (クランプ)Clamp テクスチャ座標をクランプ、 [0.0, 1.0] ; の範囲クランプ モードでは、1 回、テクスチャを適用し、境界のピクセルの色の汚れがあります。Clamps your texture coordinates to the [0.0, 1.0] range; Clamp mode applies the texture once, then smears the color of edge pixels.
Border Color (境界線の色)Border Color 境界線の色として知られる任意のカラーを、0.0 ~ 1.0 の範囲外のテクスチャ座標に対して使用します。Uses an arbitrary border color for any texture coordinates outside the range of 0.0 through 1.0, inclusive.

 

テクスチャ アドレス モードをラップします。Wrap texture address mode

ラップ テクスチャ アドレス モードでは、Direct3D はすべての整数接合点でテクスチャを繰り返します。The Wrap texture address mode makes Direct3D repeat the texture on every integer junction.

たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標を指定するとします。Suppose, for example, your application creates a square primitive and specifies texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0). テクスチャのアドレス指定モードを "Wrap" に設定すると、次の図に示すように、テクスチャは u 方向と v 方向の両方で 3 回適用されます。Setting the texture addressing mode to "Wrap" results in the texture being applied three times in both the u-and v-directions, as shown in the following illustration.

u 方向と v 方向にラップされた顔のテクスチャの図

このモードを、次のミラー テクスチャ アドレス モードと区別してください。Contrast this with the following Mirror texture address mode.

ミラー テクスチャ アドレス モードMirror texture address mode

ミラー テクスチャ アドレス モードでは、Direct3D はすべての整数境界でテクスチャをミラーリングします。The Mirror texture address mode causes Direct3D to mirror the texture at every integer boundary.

たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標を指定するとします。Suppose, for example, your application creates a square primitive and specifies texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0). テクスチャのアドレス指定モードを "Mirror" に設定すると、テクスチャは u 方向と v 方向の両方で 3 回適用されます。Setting the texture addressing mode to "Mirror" results in the texture being applied three times in both the u- and v-directions. 次の図に示すように、これが適用される行と列はすべて、先行する行または列のミラー イメージです。Every other row and column that it is applied to is a mirror image of the preceding row or column, as shown in the following illustration.

3 x 3 グリッドのミラー イメージの図

このモードを、前のラップ テクスチャ アドレス モードと区別してください。Contrast this with the previous Wrap texture address mode.

クランプ テクスチャ アドレス モードClamp texture address mode

クランプ テクスチャ アドレス モードにより、テクスチャ座標をクランプする Direct3D、 [0.0, 1.0] ; の範囲クランプ モードでは、1 回、テクスチャを適用し、境界のピクセルの色の汚れがあります。The Clamp texture address mode causes Direct3D to clamp your texture coordinates to the [0.0, 1.0] range; Clamp mode applies the texture once, then smears the color of edge pixels.

たとえば、アプリケーションで正方形のプリミティブを作成し、(0.0,0.0)、(0.0,3.0)、(3.0,3.0)、および (3.0,0.0) のテクスチャ座標をプリミティブの頂点に割り当てるとします。Suppose that your application creates a square primitive and assigns texture coordinates of (0.0,0.0), (0.0,3.0), (3.0,3.0), and (3.0,0.0) to the primitive's vertices. テクスチャ アドレス指定モードを "Clamp" に設定すると、テクスチャは一度適用されます。Setting the texture addressing mode to "Clamp" results in the texture being applied once. 列の最上部と行の最後にあるピクセル カラーが、それぞれプリミティブの上と右に拡張されます。The pixel colors at the top of the columns and the end of the rows are extended to the top and right of the primitive respectively.

次の図に、クランプされたテクスチャを示します。The following illustration shows a clamped texture.

テクスチャとクランプされたテクスチャの図

境界線の色のテクスチャ アドレス モードBorder Color texture address mode

境界線の色テクスチャ アドレス モードでは、Direct3D は境界線の色として知られる任意のカラーを、0.0 ~ 1.0 の範囲外のテクスチャ座標に対して使用します。The Border Color texture address mode causes Direct3D to use an arbitrary color, known as the border color, for any texture coordinates outside the range of 0.0 through 1.0, inclusive.

これを以下の図に示します。アプリケーションは赤い境界線を使用してプリミティブに適用されるテクスチャを指定しています。In the following illustration, the application specifies that the texture be applied to the primitive using a red border.

テクスチャと赤い境界線のテクスチャの図

デバイスの制限Device limitations

一般に、0.0 ~ 1.0 の範囲外のテクスチャ座標も許可されますが、その範囲からテクスチャ座標がどの程度はずれることが可能かは、ほとんどがハードウェアの制限によって変わってきます。Although the system generally allows texture coordinates outside the range of 0.0 and 1.0, inclusive, hardware limitations often affect how far outside that range texture coordinates can be. デバイスの機能が取得されると、レンダリング デバイスは、デバイスに許可されているテクスチャ座標の全範囲の制限を伝えます。A rendering device communicates the limit for the full range of texture coordinates allowed by the device, when you retrieve the device's capabilities.

たとえば、この値が 128 の場合、入力テクスチャ座標は -128.0 ~ +128.0 の範囲を保つ必要があります。For instance, if this value is 128, then the input texture coordinates must be kept in the range -128.0 to +128.0. この範囲外のテクスチャ座標を持つ頂点を渡すことは無効です。Passing vertices with texture coordinates outside this range is invalid. 同じ制限は、自動的なテクスチャ座標生成とテクスチャ座標変換の結果として生成されるテクスチャ座標にも適用されます。The same restriction applies to the texture coordinates generated as a result of automatic texture coordinate generation and texture coordinate transformations.

テクスチャの繰り返しの制限は、テクスチャ座標によってインデックスされるテクスチャのサイズによって異なります。Texture repeating limitations can depend on the size of the texture indexed by the texture coordinates. たとえば、テクスチャの寸法が 32 で、デバイスに許可されるテクスチャ座標の範囲が 512 とすると、実際の有効なテクスチャ座標範囲は 512/32 = 16 となり、このデバイスのテクスチャ座標は -16.0 ~ +16.0 の範囲内にある必要があります。In that case, supposing the texture dimension is 32, and the range of texture coordinates allowed by the device is 512, the actual valid texture coordinate range would therefore be 512/32 = 16, so the texture coordinates for this device must be within the range of -16.0 to +16.0.

関連トピックRelated topics

テクスチャTextures