2

メソッドを使用D3DXCreateSphereして球メッシュを作成します。その上に地球のテクスチャを適用したいと思います。次のコードを使用して、ピクセル シェーダーでテクスチャ座標を計算します。

sampler ShadeSampler = sampler_state
{
    Texture   = (ShadeTex);
    AddressU = Mirror;
    AddressV = Mirror;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
    MipFilter = LINEAR;
};
PS_OUTPUT PSMain(VS_OUTPUT input){

PS_OUTPUT output = (PS_OUTPUT)0;

vector uv;

uv.x = 0.5 + atan2(input.normal.z, input.normal.x) / piMul2;
uv.y = 0.5f - asin(input.normal.y) / pi;

vector b = tex2D(ShadeSampler, uv.xy);

output.diffuse = b * input.diffuse;

return output;
}

D3DXCreateTextureFromFileExメソッドを使用して を作成しますが、パラメーターの値をIDirect3DTexture9使用してミップマップ機能を有効にすると、継ぎ目に常に 1 つのピクセル ラインが存在するというレンダリング結果が少しおかしくなります。下の図は問題を示していますが、パラメーターの値を使用してミップマップ機能を無効にすると、線が消えます。どうしてこうなったのかわからないのですが、何かアドバイスはありますか?D3DX_DEFAULTMipLevelsD3DX_FROM_FILEMipLevels

ここに画像の説明を入力

4

2 に答える 2

1

私には、これはテクスチャ ラッピングの問題のようです。D3DRS_WRAPx レンダリング ステートのさまざまなオプションを試しましたか? 例えば、

IDirect3DDevice9::SetRenderState(D3DRS_WRAP0, D3DWRAP_U);
于 2013-11-02T13:05:27.853 に答える