1

テクスチャと長方形があります。

その長方形でテクスチャを繰り返したい。しかし、ほんの一部です。

0.25テクスチャ座標を0.75X と Y で使用し、それを 2 回繰り返したいとします。

長方形の頂点の座標を次のように設定した場合:

(0.25, 0.25)
(0.25, 0.75 * 2)
(0.75 * 2, 0.25)
(0.75 * 2, 0.75 * 2)

0.25これは から までのテクスチャを0.752 回繰り返すのではなく、 から0.25まで1.0と から1.0まで0.25のテクスチャを生成します。これは異なります。

テクスチャを変更せずに、その一部を使用してその部分だけを繰り返して、目標を達成するにはどうすればよいですか?

長方形に頂点を追加したくないことに注意してください。

4

1 に答える 1

4

フラグメント シェーダーを使用すると、非常に簡単に実現できます。

float scale;
float offset;

sampler2D baseMap;

struct PS_INPUT 
{
   float2 Texcoord : TEXCOORD0;

};

float4 ps_main( PS_INPUT Input ) : COLOR0
{
   float2 tc =  fmod(Input.Texcoord, scale) + float2(offset, offset);
   return tex2D( baseMap, tc);

}

このシェーダは対称であるため、ルックアップ ウィンドウは対角線に沿って移動します。ただし、独自のオフセットとスケールを各テクスチャ座標コンポーネントに個別に適用すると、ウィンドウは完全に自由に移動します。

于 2012-11-23T10:36:47.857 に答える