1

私の質問は:を使用して正しいピラミッド (三角四角錐) を描画するにはどうすればよい D3DPT_TRIANGLEFANですか?

ポイントとして使用しました:

CUSTOMVERTEX vertices[] =
{
    {  0.0f, 3.0f, 0.0f, 0x00ff0000, },           //The top Vertex
    {  1.0f, 0.0f, -1.0f, 0xff00ff00, },          //(A) vertex
    {  1.0f, 0.0f, 1.0f,  0xff0000ff, },          //(B) vertex
    {  -1.0f, 0.0f, 1.0f, 0xffffff00, },          //(C) vertex
    {  -1.0f, 0.0f, -1.0f, 0xffff00ff, },         //(D) vertex
    {  1.0f, 0.0f, -1.0f, 0xff00ff00, },          //(A) vertex
};

aCUSTOMVERTEXは次のとおりです。

struct CUSTOMVERTEX 
{
    float x, y, z;
    DWORD color;
};

そして私はそれを次のように呼びます:

g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 5);

ピラミッドは正しく描画されますが、追加の三角形が画面に描画されます。これは、頂点と最初の頂点で作成された三角形です (ピラミッドの底面に PI / 2 の角度があり、他の点が <<1.0 である直角三角形)。 f, 0.0f, -1.0f>> (最初のポイント (A))。

だから私が欲しいのはその三角形を隠すことです、私はデバイスを1から5まで描画しようとしましたが、それは私にベース( (A)-(B)-(C)-(D) 平面)しか与えません、そして私も試しましたカリング D3DCULL_CW を作成し、ピラミッドを半分回転すると、追加の三角形が見え、半分は別の平面に隠れていました。

4

1 に答える 1

3

の最後のパラメータIDirect3DDevice9::DrawPrimitive()は、あなたの場合は 4 であるべきプリミティブ カウントですか?

ベースを含めたい場合は、完全なピラミッドをファンで表すことができないため、代わりにピラミッドを三角形のリストとしてレンダリングする必要があります。

于 2013-01-07T16:05:29.923 に答える