0

OpenGL では、デフォルトの設定は次のとおりです。

  1. 座標系 = 右利き、+x->right, +y->up, +z->towards-viewer.
  2. したがって、z を中心とした正の回転は、x 基底ベクトルを y (反時計回り) に移動します。
  3. 正面向きのポリゴンは、CCW 頂点として定義されます。
  4. 背面フェースのカリングは、次の方法で実現されます。
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

わかりました、私たちは皆これを知っています。Flash11/Molehill/Stage3dでは、デフォルトは同じであると想定されています。

ただし、手順 4 で背面カリングを有効にすると、次のようになります。

c3d.setCulling(Context3DTriangleFace.BACK);

私の顔は選別されています。デフォルトはContext3DTriangleFace.FRONTのようです。それ以外は同じである OpenGL と Stage3D でサニティ チェック ケースを作成しました。同じ頂点/インデックス リスト、デフォルトのまま、同じ正投影行列、同一の ModelView ですが、カリングを BACK ではなく FRONT に設定する必要があります。

Stage3D の巻き取りのデフォルトが異なるようです。つまり、ボンネットの下で OpengGL が次のように設定されているかのようです: glFrontFace(GL_CW); OpenGL のデフォルトの代わりに: glFrontFace(GL_CCW);

他の誰かがこれに出くわしましたか? それは私を夢中にさせています...

4

2 に答える 2

0

ずいぶん前に答えようと思ってたのに忘れてたので今さら答えます。

私が正しかったのは、Stage3D は、OpenGL の CCW とは対照的に、前面を画面空間での CW ワインディングと見なすことです。これが OpenGL から来た人に役立つことを願っています。インデックス バッファ インデックスの順序を逆にするか、カリング モードを FRONT に変更します。インデックスの順序を変更することにしました。

乾杯、

シェーン

于 2012-07-28T11:40:22.307 に答える
0

おそらく、一方は正面が時計回りで、もう一方は反時計回りです。glFrontFace(GL_CW);またglFrontFace(GL_CCW);

于 2011-12-30T12:04:10.350 に答える