2010-12-15 7 views
0

私は、2Dサイドスクロールタイプのゲーム用の2D地形を作成する目的でフラット頂点ベースのジオメトリを作成しています。頂点バッファ上にテクスチャを張り付けることはできますか? (Windows Phone 7/XNA)

これまでのところ、私は頂点バッファを細かく作成し、私が望むスクリーンにどのような三角形を描くこともできます。しかし、私はテクスチャリングに問題があります。どのようにタイルを使って三角形をテクスチャにすることができますか?私はBasicEffectクラスを使用しています。

UVデータをすべての頂点に設定して、テクスチャが何回でもシームレスにタイル表示されるようにするにはどうすればよいでしょうか?

私の現在のアイデアは、それに基づいてジオメトリ全体の寸法を導出し、次に各三角形を通り、その頂点のUVを設定する左端および右端の頂点(上端、下端)を取得することです(三角形の幅/高さに基づいて)、次のテクスチャにブレンドするようなテクスチャを使用する値に設定します(つまり、1つの頂点UVは0.1,0.3、次に0.2,0.4になります)。

これは少し複雑に思えますが、巨大なドローバックがあります。タイルのサイズは、最大の三角形のサイズよりも大きくなければなりません。私は解決策か、少なくとも私が持っている方法と同じことをやったが、何も思い付かなかった他の人のために、グーグルグーグルを試みた。

答えて

3

はい、テクスチャコードを正しく設定するアルゴリズムを見つける必要があります。残念なことに、テクスチャとジオメトリがどのように表示されるかの関数です。どのくらいうまくいくかわかりません助けて。

テクニカルビットまでは、TextureAddressModeWrapに設定する必要があります.GPUは、UVに基づいてそれに合わせてテクスチャをサンプリングして処理します。

graphics.GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap; 
graphics.GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap; 
関連する問題