OpenGL中有没有办法只渲染内部面而外部面仍然覆盖/遮挡内部面?为了更好地理解我想要完成的任务,如果我要切片一个随机定位的圆柱体,我只会看到一个椭圆。
我努力了:
glEnable(GL_CULL_FACE);
glEnable(GL_BACK);
但在这种情况下,我看到了圆柱体的整个内部,而外表面只是消失了,没有覆盖任何东西。
谢谢
OpenGL中有没有办法只渲染内部面而外部面仍然覆盖/遮挡内部面?为了更好地理解我想要完成的任务,如果我要切片一个随机定位的圆柱体,我只会看到一个椭圆。
我努力了:
glEnable(GL_CULL_FACE);
glEnable(GL_BACK);
但在这种情况下,我看到了圆柱体的整个内部,而外表面只是消失了,没有覆盖任何东西。
谢谢
GL_BACK
不能“启用”。剔除的面由 选择glCullFace
:
glEnable(GL_BACK);
glCullFace(GL_BACK);
注意,glEnable(GL_BACK)
会导致INVALID_ENUM
错误。
面剔除取决于缠绕顺序。另请参见面剔除。
例如,如果你的脸是顺时针的并且你想剔除背面,那么你必须:
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
请注意,重要的是,所有面都具有相同的缠绕顺序(顺时针或逆时针)。