Microsoft DirectX 8.0 (C++) |
一般に、システムでは 0.0 〜 1.0 (0.0 と 1.0 を含む) の範囲外にあるテクスチャ座標でも使用できるが、多くの場合、その許容範囲はハードウェア制限によって影響される。デバイス能力を取得すると、レンダリング デバイスはこの制限を D3DCAPS8 構造体の MaxTextureRepeat メンバに知らせる。このメンバ内の値は、デバイスで使用可能なテクスチャ座標の全範囲を示す。たとえば、この値が 128 の場合、入力テクスチャ座標は -128.0 〜 +128.0 の範囲内になければならない。この範囲外のテクスチャ座標を持つ頂点を渡すと無効になる。自動テクスチャ座標生成およびテクスチャ座標トランスフォームの結果として生成されたテクスチャ座標に対しても、これと同じ制限が適用される。
MaxTextureRepeat の解釈も D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 能力ビットによって変わる。このビットを設定すると、D3DCAPS8 の MaxTextureRepeat メンバの値が定義どおりに正確に使用される。ただし、D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE が設定されていない場合は、テクスチャ反復制限は、テクスチャ座標によってインデックス化されたテクスチャのサイズに依存する。この場合、有効なテクスチャ座標の範囲を計算するために、MaxTextureRepeat は、現在のテクスチャ サイズによって最大詳細レベルでスケーリングされる必要がある。たとえば、テクスチャの寸法が 32 で、MaxTextureRepeat 値が 512 の場合、実際の有効なテクスチャ座標範囲は 512/32 = 16 となる。したがって、このデバイスでは -16.0 〜 +16.0 の範囲内にテクスチャ座標が存在する必要がある。