0

如果我在上面画gluCylinder一个gluDisk。在不启用剔除的情况下,我得到了带有盖子效果的所需圆柱体。但是,如果我启用剔除,磁盘(又名盖子)就会消失。 这是为什么? 这是主要问题。此外,启用剔除后,圆柱体的背面也不会被绘制。我明白为什么会发生这种情况,但我仍然希望看到圆柱体内部的绘制。代码是:

    glPushMatrix()
    quadratic = gluNewQuadric()
    gluQuadricNormals(quadratic, GLU_SMOOTH)
    gluQuadricTexture(quadratic, GL_TRUE)
    glRotatef(90, 1, 0, 0)
    glTranslate(0, 0, -3*sz)
    gluCylinder(quadratic, 0.75*sz, 0.75*sz, 3.0*sz, 32, 32)
    gluDisk(quadratic, 0.0, 0.75*sz, 32, 32)
    glPopMatrix()
4

2 回答 2

4

您的磁盘朝向错误的方向(错误的绕组)。因此,它被淘汰。您可以尝试使用 反转其方向gluQuadricOrientation,这应该可以解决问题。有关更多信息,请参阅gluDiskglCullFace的 OpenGL 规范。

于 2012-07-11T09:53:21.203 回答
2

圆盘只是一个没有任何厚度的平面。所以一侧在前面,另一侧在后面,启用剔除后,其中一个会被剔除。你可能只是看到被淘汰的一面。如果这不是您想看到的那一面,只需旋转圆盘即可。没有什么比它更棒的了。所以只需将其包装成:

glPushMatrix();
glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
gluDisk(quadratic, 0.0, 0.75*sz, 32, 32);
glPopMatrix();

或者,就像 kroneml 建议的那样,改变它的三角形的方向。自己决定哪一个在您的情况下在概念上更正确。

于 2012-07-11T09:57:16.050 回答