在OpenGL中,默认设置是:
协调系统=右转,+x->right, +y->up, +z->towards-viewer.
实现了后面的CCW vertices.
glEnable(GL_CULL_FACE);glCullFace(GL_BACK);
好吧,我们都知道。在Flash 11/Molehill/Stage3d中,默认设置应该是相同的。
但是,如果我在第4步中通过以下方法启用后台剔除:
c3d.setCulling(Context3DTriangleFace.BACK);我的脸被剔除了。默认情况是Context3DTriangleFace.FRONT,我在OpenGL和Stage3D中创建了一个正常检查用例,它们在其他方面是相同的。相同的顶点/索引列表,保留默认值,相同的正交投影矩阵,恒等ModelView,但我必须设置裁剪前,而不是后面。
这就好像Stage3D有一个不同的绕组违约。也就是说,就好像在引擎盖下,OpengGL被设置为: glFrontFace(GL_CW);而不是OpenGLs默认值: glFrontFace(GL_CCW);
还有其他人遇到过这个吗?快把我逼疯了。
发布于 2012-07-28 11:40:22
我很久以前就打算回答这个问题,但忘了,所以我现在就回答。
我是对的,Stage3D认为正面是屏幕空间中的CW缠绕,而不是OpenGL的CCW。我希望这对来自OpenGL的任何人都有帮助。只需反转索引缓冲区索引的顺序,或将筛选模式更改为最前面。我决定改变索引顺序。
干杯,
沙恩
发布于 2011-12-30 12:04:10
也许其中一个正面顺时针方向,另一个逆时针方向。glFrontFace(GL_CW);或glFrontFace(GL_CCW);
https://stackoverflow.com/questions/8677498
复制相似问题