- ベストアンサー
Direct3Dでの頂点の順番
ポリゴンを描画するときの頂点の順番について質問があります。 私が現在使っているのはUnmanaged DirectXではなく、Managed DirectXですが、こちらの環境ではUnmanagedでも同様の現象を確認できました。 verts[0]=CustomVertex::TransformedColored(200.0f, 50.0f, 0.0f, 1.0f, Color::Red.ToArgb()); verts[1]=CustomVertex::TransformedColored(50.0f, 100.0f, 0.0f, 1.0f, Color::Blue.ToArgb()); verts[2]=CustomVertex::TransformedColored(200.0f, 0.0f, 0.0f, 1.0f, Color::Green.ToArgb()); これは(x,y,z,rhw)=(200,50,0,1), (50,100,0,1), (200,0,0,1)の色の付いた三つの頂点を作成していて、この書き方でだとちゃんと三角形のポリゴンが表示されます。 次に、 verts[0]=CustomVertex::TransformedColored(200.0f, 0.0f, 0.0f, 1.0f, Color::Red.ToArgb()); verts[1]=CustomVertex::TransformedColored(50.0f, 100.0f, 0.0f, 1.0f, Color::Blue.ToArgb()); verts[2]=CustomVertex::TransformedColored(200.0f, 50.0f, 0.0f, 1.0f, Color::Green.ToArgb()); これは作成している頂点は同じなのですが、順番が変わっています(verts[0]とverts[2]を入れ替えました)。順番が変わるだけ(色も変わっていますが)ならばちゃんと表示されるだろうと思ったのですが、何も表示されませんでした。 どうも頂点の順番によって描画できるかどうかが決まるようなのですが、これはそういう仕様なのでしょうか?また、これを回避する方法はあるのでしょうか? ご存知の方がいらっしゃればご教授お願いします。 私のコンピューターの環境は VGA:Radeon HD 3200(AMD 780G) VGAメモリ:メインメモリと共用 OS:Windows XP Home Edition SP2 DirectX:9.0c 描画する際はDrawPrimitives(UnmanagedではDrawPrimitive)を使用し、TRIANGLEFAN,TRIANGLELIST,TRIANGLESTRIPなども試してみましたが同じでした。
- みんなの回答 (2)
- 専門家の回答
お礼
表と裏があるというのはどこかで耳にしたことがあったのですが、右回り順か左回り順かで表裏がきまるというのは知りませんでした。 わざわざURLまで示してくださってありがとうございます。