• ベストアンサー

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なども試してみましたが同じでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.1

DirectX も OpenGL も,多角形の頂点が右回り順か左回り順かで, 面の表裏のどっちが見えているのかを判定しています. そして普通は裏向きの面を無駄に描画しないようにして,レンダリング速度を上げています. 「カリング (culling)」で検索してみてください. ★ DirectX Class ★ * Chapter 06: 3D図形の表示 * http://princess-tiara.biz/directx/?chapter=6 「実践 3Dプログラミングの集い」 Lecture 6: OpenGL / DirectXにおける3D基礎概念の対比 http://sequoia-web.hp.infoseek.co.jp/tsudoi/tsudoi06.shtml 頂点データによる半透明処理 http://sorceryforce.com/programing/directx/direct3d/base/vertexalphablend.html "カリングとは" で検索. http://www.google.co.jp/search?q=%22%E3%82%AB%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%A8%E3%81%AF%22&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a 「カリング DirectX」で検索. http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=0lI&q=%E3%82%AB%E3%83%AA%E3%83%B3%E3%82%B0+DirectX&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja

akoyagai
質問者

お礼

表と裏があるというのはどこかで耳にしたことがあったのですが、右回り順か左回り順かで表裏がきまるというのは知りませんでした。 わざわざURLまで示してくださってありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

板には表と裏があるということですね 普通は表だけしか描画しないようになっている 表か裏かは頂点の順番が時計回りか反時計回りかで決める

akoyagai
質問者

お礼

回答ありがとうございました。 これからは頂点の順番にも気を付けようと思います。

すると、全ての回答が全文表示されます。

関連するQ&A