QweRius
Пользователь
День добрый,
Как упорядочить отрисовку объектов в opengl, тоесть чтобы дальние объекты не перекрывали ближние?
В коде:
сфера F5, которая находится дальше, перекрывает две другие, которые находятся ближе, т.к рисуется позже. Как заставить отображаться объкты в нужном порядке изначально, а также, при повороте камеры? (для поворота использую gluLookAt)
Как упорядочить отрисовку объектов в opengl, тоесть чтобы дальние объекты не перекрывали ближние?
В коде:
Код:
void display () {
double diam_u=1.2, diam_f=1.2;
int n;
GLUquadricObj *quadObj;
quadObj = gluNewQuadric();
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable(GL_DEPTH_TEST);
gluQuadricDrawStyle(quadObj, GLU_FILL);
for (n=1; n<=1;n++ ) {
GLfloat front_color[] = {1,1,1,1};
GLfloat back_color[] = {0,0,1,1};
glMaterialfv(GL_FRONT, GL_DIFFUSE, front_color);
glMaterialfv(GL_BACK, GL_DIFFUSE, back_color);
glPushMatrix();
//U
glColor3f ( 0.0f, 0.0f, 1.0f );
glTranslatef(x_u[n],y_u[n],z_u[n]);
gluSphere(quadObj, diam_u, 32, 32);
glPopMatrix();
//F1
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f1[n],y_f1[n],z_f1[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
//F2
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f2[n],y_f2[n],z_f2[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
//F3
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f3[n],y_f3[n],z_f3[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
//F4
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f4[n],y_f4[n],z_f4[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
//F5
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f5[n],y_f5[n],z_f5[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
//F6
glColor3f ( 0.0f, 1.0f, 0.0f );
glPushMatrix();
glTranslatef(x_f6[n],y_f6[n],z_f6[n]);
gluSphere(quadObj, diam_f, 32, 32);
glPopMatrix();
}
glutSwapBuffers();
}