2

三角形が時計回りか反時計回りかを判断する方法を誰か説明してもらえますか?

次のコードで三角形をレンダリングすると

glBegin(GL_POLYGON);
   glVertex3f(-0.5f, -0.5f, 0.0f);
   glVertex3f(-0.5f, 0.5f, 0.0f);
   glVertex3f(0.5f, 0.5f, 0.0f);
glEnd();

時計回りまたは反時計回りの場合、どうすればよいですか? 見ている三角形の面にも依存することは知っていますが、コードでそれを確認するにはどうすればよいですか? OpenGL はデフォルトで反時計回りを使用することを読みました。しかし、OpenGL がどのように頂点を描画するかを考えると、時計回りのように思えます。それは私の推論の単なる誤りだと思います。

4

2 に答える 2

2

このことわざを見てみましょう:
ウィンドウ座標へのポリゴンの射影は、仮想オブジェクトが最初の頂点、2 番目の頂点などから最後の頂点までのパスをたどり、最後にその最初の頂点は、ポリゴンの内部を時計回りに移動します。

このポリゴンのウィンドウ座標への射影との関係を考慮することが重要です。

基本的に、OpenGLがデフォルトで反時計回りを使用すると言うとき、あなたの推論は少しずれています。しかし、何のために?表示されていないポリゴンがカリングされる (レンダリングされない) ように、どのポリゴンが正面を向いているかを判別します。つまり、ワインディングには何らかの目的があり、たまたま反時計回りまたは時計回りに巻かれているわけではありません。

サイド ノードでは、glBegin() と glEnd() の使用を停止します。

于 2013-11-10T13:05:22.413 に答える