1

OpenGL中有没有办法只渲染内部面而外部面仍然覆盖/遮挡内部面?为了更好地理解我想要完成的任务,如果我要切片一个随机定位的圆柱体,我只会看到一个椭圆。

我努力了:

    glEnable(GL_CULL_FACE);
    glEnable(GL_BACK);

但在这种情况下,我看到了圆柱体的整个内部,而外表面只是消失了,没有覆盖任何东西。

谢谢

4

1 回答 1

2

GL_BACK不能“启用”。剔除的面由 选择glCullFace

glEnable(GL_BACK);

glCullFace(GL_BACK);

注意,glEnable(GL_BACK)会导致INVALID_ENUM错误。

面剔除取决于缠绕顺序。另请参见面剔除

例如,如果你的脸是顺时针的并且你想剔除背面,那么你必须:

glFrontFace(GL_CW​);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);

请注意,重要的是,所有面都具有相同的缠绕顺序(顺时针或逆时针)。

于 2020-02-05T10:48:38.147 回答