2

DirectX7 を使用して、2D (z 座標は 0) で頂点とインデックス バッファーを使用して 3D 効果を作成しようとしています。

絵で説明するのは簡単です:

問題のイラスト

問題は、線が壊れていることです。彼らはまっすぐであるべきです。この画像をレンダリングするには、三角形に分割し、DrawIndexedPrimitiveVB を使用してレンダリングします。明らかに、各三角形の傾きが少し異なりますが、その理由はわかりません。

ここで些細なことを見逃していますか?

これが役立つかどうかはわかりませんが、ソースと宛先のクワッドは次のとおりです。

    SPoint4:= pBounds4(1, 1, W - 2, H - 2);
    DPoint4:= Point4(ProjTo2dX(i, FlyDist + DeepDist, W), ProjTo2dY(0, FlyDist + DeepDist, H), ProjTo2dX(W - i, FlyDist, W), ProjTo2dY(0, FlyDist, H), ProjTo2dX(W - i, FlyDist, W), ProjTo2dY(H, FlyDist, H), ProjTo2dX(i, FlyDist + DeepDist, W), ProjTo2dY(H, FlyDist + DeepDist, H));
4

3 に答える 3

3

正方形/長方形のテクスチャを任意のクワッドにマップする 1 つの方法は、射影補間です。これを行う方法を示す記事を書きました(頂点/ピクセル シェーダーを使用)。

短いバージョン: クワッド全体で UV を補間する方法は、GPU がパースペクティブ コレクト レンダリングで行う方法と似ています (お気づきかもしれませんが、2 つの三角形の間に目に見える継ぎ目が生成されません)。これを行うには、クワッドの各頂点の偽の「深さ」値を計算し、この「深さ」に基づいて同次座標を使用して補間を行う必要があります。完全な詳細は、上記のリンク先の記事にあります。

于 2012-05-26T09:07:55.033 に答える
1

台形上で適切なテクスチャ座標補間を行うには、いくつかの遠近情報を提供する必要があります。 を参照してください。

トライアングル ストリップで作成されたクワッドでの OpenGL ES 1.1 のテクスチャ変形に関する問題

于 2011-02-09T18:23:55.080 に答える
0

解決策または少なくとも回避策を見つけました。画像を 2 つの三角形に分割する代わりに、多くの (それぞれ 2 つの三角形で構成される複数の水平ストリップ) に分割します。この場合、画像は正常に見えます。

破線が少ない

この場合、画像は 10 個のストリップ (20 個の三角形) に分割されます。

コメントやその他の解決策があれば幸いです。ありがとうございました。

于 2011-02-09T11:51:33.793 に答える