查看圆柱体的内部

时间:2012-07-11 08:20:01

标签: opengl glu

如果我在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()

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

磁盘只是一个没有任何厚度的平面。因此,一方是前方,另一方是后方,并且已经剔除,其中一条被剔除。你可能只是看到被淘汰的一面。如果这不是您想要看到的那一面,只需旋转磁盘即可。没什么比这更好的了。所以只需将其包装成:

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

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