static int DisplaySuperquadrics(superquadricsstruct * sp) { int polys = 0; glDrawBuffer(GL_BACK); if (sp->wireframe) glClear(GL_COLOR_BUFFER_BIT); else glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (sp->viewcount < 1) { sp->viewcount = sp->viewwait; /* ReshapeSuperquadrics(-1, -1);*/ } glPushMatrix(); glTranslatef(0.0, 0.0, -((GLfloat) (sp->dist) / 16.0) - (sp->Mode * 3.0 - 1.0)); /* viewing transform */ glRotatef(sp->rotx, 1.0, 0.0, 0.0); /* pitch */ glRotatef(sp->rotz, 0.0, 0.0, 1.0); /* bank */ glRotatef(sp->roty, 0.0, 1.0, 0.0); /* "spin", like heading but comes after P & B */ SetCull(0, sp); polys = DoneScale(sp); glPopMatrix(); /* Remember to flush & swap the buffers after calling this function! */ return polys; }
static int DisplaySuperquadrics(ModeInfo *mi) { superquadricsstruct *sp = &superquadrics[MI_SCREEN(mi)]; int polys = 0; glDrawBuffer(GL_BACK); if (sp->wireframe) glClear(GL_COLOR_BUFFER_BIT); else glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (sp->viewcount < 1) { sp->viewcount = sp->viewwait; /* ReshapeSuperquadrics(-1, -1);*/ } glPushMatrix(); glTranslatef(0.0, 0.0, -((GLfloat) (sp->dist) / 16.0) - (sp->Mode * 3.0 - 1.0)); /* viewing transform */ glRotatef(sp->rotx, 1.0, 0.0, 0.0); /* pitch */ glRotatef(sp->rotz, 0.0, 0.0, 1.0); /* bank */ glRotatef(sp->roty, 0.0, 1.0, 0.0); /* "spin", like heading but comes after P & B */ SetCull(0, sp); glScalef(0.7, 0.7, 0.7); /* jwz: scale it down a bit */ # ifdef HAVE_MOBILE /* Keep it the same relative size when rotated. */ { GLfloat h = MI_HEIGHT(mi) / (GLfloat) MI_WIDTH(mi); int o = (int) current_device_rotation(); if (o != 0 && o != 180 && o != -180) glScalef (1/h, 1/h, 1/h); } # endif polys = DoneScale(sp); glPopMatrix(); /* Remember to flush & swap the buffers after calling this function! */ return polys; }