こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2008-08-13 23:21:29

QNo.4249663

暇なときに回答ください

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

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

投稿日時 - 2008-08-14 08:24:38

お礼

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

投稿日時 - 2008-08-14 13:13:08

ANo.1

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2008-08-14 09:17:47

お礼

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

投稿日時 - 2008-08-14 13:14:48

あなたにオススメの質問