如果我在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()
答案 0 :(得分:4)
您的磁盘朝向错误的方向(错误的缠绕)。因此,它被剔除。您可以尝试使用gluQuadricOrientation
来反转其方向,这应该可以解决问题。有关更多信息,请参阅gluDisk和glCullFace的OpenGL规范。
答案 1 :(得分:2)
磁盘只是一个没有任何厚度的平面。因此,一方是前方,另一方是后方,并且已经剔除,其中一条被剔除。你可能只是看到被淘汰的一面。如果这不是您想要看到的那一面,只需旋转磁盘即可。没什么比这更好的了。所以只需将其包装成:
glPushMatrix();
glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
gluDisk(quadratic, 0.0, 0.75*sz, 32, 32);
glPopMatrix();
或者,就像kroneml建议的那样,改变它的三角形的方向。在你的情况下,自己决定哪一个在概念上更正确。