Посмотреть внутри цилиндра
Если я нарисую 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 ответа
Ваш диск направлен не в ту сторону (неправильная обмотка). Поэтому оно отбраковано. Вы можете попробовать изменить его ориентацию, используя gluQuadricOrientation
, это должно сделать свое дело. Для получения дополнительной информации обратитесь к спецификации OpenGL для gluDisk и glCullFace.
Диск - это просто плоскость без какой-либо толщины. Таким образом, одна сторона впереди, а другая сзади, и при включенном отбраковке одна из них отбрасывается. Вы, вероятно, просто видите выброшенную сторону. Если это не та сторона, которую вы хотите увидеть, просто вращайте диск вокруг. Ничего особенного в этом нет. Так что просто оберните это в:
glPushMatrix();
glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
gluDisk(quadratic, 0.0, 0.75*sz, 32, 32);
glPopMatrix();
Или, как предлагает kroneml, изменить ориентацию своих треугольников. Решите для себя, какой из них является более концептуально правильным в вашей ситуации.