1

現在、正投影面にテクスチャ イメージを適用して、一種の「UI 装飾」として使用できるようにしようとしています。

プレーンは、D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP 形式の 2 つの三角形で構成されています。シェーダーでプレーンをレンダリングしようとすると、白く表示されます (ブレンド状態が true に設定されている場合は表示されません)。頂点シェーダーでのみサンプリングしているため、正投影面でテクスチャの四隅のみをサンプリングしているためだと思います。

これは私のシェーダーの現在のコードです:

void VSMain( const VSInput input, out PSInput output) {
    output.pos = input.pos;
    output.pos = mul( output.pos, g_WVP);

    float2 tex_pos;
    float4 Tex;
    tex_pos.x = ( input.pos.x + 512) / 1024;
    tex_pos.y = (-input.pos.z + 512) / 1024;

    Tex = g_materialMap.SampleLevel( g_sampler, tex_pos, 0);

    output.colour = Tex;
}

void PSMain( const PSInput input, out PSOutput output) {
    output.colour = input.colour;
}

シーンで現在レンダリングしているハイトマップにこのシェーダーを適用すると、正しく機能しますが、正投影面では正しく機能しません。

このテクスチャを正投影面に正しく適用するのを手伝ってくれる人はいますか? (必要に応じて、現在のシーンのスクリーンショットを提供できます)

4

1 に答える 1

1

私は自分で問題を発見して修正しました。

正しく色を付けるには、ピクセル シェーダーでサンプリングを行う必要がありますが、テクスチャを追加してピクセル シェーダーに表示することを忘れていました。

修正は次のとおりです。

回線を切り替える

Tex = g_materialMap.SampleLevel( g_sampler, tex_pos, 0);

output.tex = tex_pos;

次に、ピクセルシェーダーで

float4 Tex = g_materialMap.Sample( g_sampler, input.tex);
output.colour = Tex;
于 2013-04-12T22:12:38.160 に答える