0

さて、C++とDirectXを使用して大きな風景を描くためのコードがあります。1つのテクスチャでテクスチャを作成してから、さらに追加する必要がありました。1つのテクスチャ画像があり、画像に2つのテクスチャが含まれている場所でそれを行っている人々を見ました。それが私が作ったものです、それは256x128の画像です。私の問題は、地形がUVマップ1テクスチャへの座標を自動的に生成したため、両方のテクスチャが表示されていることです。世界の高さが十分に高い場合は1テクスチャで、下のすべてが別のテクスチャになるようにする必要があります。UV座標の私のコード、

頂点[y*WIDTH * x] .U = x / 1.28;

頂点[y*WIDTH * x] .V = y / 1.28;

これらは私のマッピング座標であり、Xは描画している頂点の現在のX値であり、Y値は現在のy位置です。ハイトマップは128x128なので、1.28で割って、各ポリゴンにテクスチャUVがマッピングされるようにしました。高さマップをロードして取得しようとしているので、高さも計算されます。十分に高い場合は、画像の半分をUVマップし、もう一方の場合は、画像の反対側をUVマップします。誰か助けてください!

4

1 に答える 1

0
bool topTexture = height[x][y] > threshold;
float u = x / 1.28;
float v = y / 1.28;
Vertices[y * WIDTH * x].U = (u - (int)u) / 2 + (topTexture ? 0.5 : 0);
Vertices[y * WIDTH * x].V = (v - (int)v) / 2 + (topTexture ? 0.5 : 0);

しきい値レベルで 2 つのテクスチャをブレンドすることができます。次に、PixelShader でそれを行う必要があります。

于 2012-08-20T17:56:33.650 に答える