У меня есть куб с конечно 6 сторонами.Теперь я хочу не отображать все стороны, когда некоторые из этих сторон находятся вне поля зрения.Поэтому я передаю вращение камеры функции рисования, показанной ниже:
void Voxel::draw(QGLWidget *parent, GLfloat rotationX, GLfloat rotationY, GLfloat rotationZ) {
glBegin(GL_QUADS);
parent->qglColor(color);
if ((rotationY > -90 && rotationY < 90) | rotationY < -270) {
// Side top
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Texture and Quad
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
glVertex3f( 1.0f, 1.0f, -1.0f); // Bottom Right Of The Texture and Quad
glVertex3f(-1.0f, 1.0f, -1.0f); // Bottom Left Of The Texture and Quad
}
// Side bottom
glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom Left Of The Texture and Quad
glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
glVertex3f( 1.0f, -1.0f, 1.0f); // Top Right Of The Texture and Quad
glVertex3f(-1.0f, -1.0f, 1.0f); // Top Left Of The Texture and Quad
// Side 1
glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
glVertex3f( 1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
glVertex3f( 1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Left Of The Texture and Quad
// Side 2
glVertex3f(-1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
glVertex3f( 1.0f, 1.0f, -1.0f); // Top Right Of The Texture and Quad
glVertex3f( 1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom Left Of The Texture and Quad
// Side 3
glVertex3f(1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
glVertex3f(1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
glVertex3f(1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
glVertex3f(1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
// Side 4
glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
glVertex3f(-1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
glVertex3f(-1.0f, 1.0f, -1.0f); // Top Left Of The Texture and Quad
glVertex3f(-1.0f, -1.0f, -1.0f); // Bottom Right Of The Texture and Quad
glEnd();
}
По некоторым причинам, однако, это не полностью работает.Особенно при вращении вокруг оси X.В некоторых точках вращения он не показывает квад, в то время как он должен отображаться.
Я устанавливаю вращение следующим образом:
glRotatef(rotationX, 1.0, 0.0, 0.0);
glRotatef(rotationY, 0.0, 1.0, 0.0);
Если мне нужно объяснить больше,Пожалуйста спросите.Если кто-то знает хорошую документацию об этих вещах, скажите, пожалуйста.