static void game_draw_back(int pose, int d, const float p[3]) { float c[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; float t = SDL_GetTicks() / 1000.f + 120.0f; glPushMatrix(); { if (d < 0) { glRotatef(game_rz * 2, view_e[2][0], view_e[2][1], view_e[2][2]); glRotatef(game_rx * 2, view_e[0][0], view_e[0][1], view_e[0][2]); } glTranslatef(p[0], p[1], p[2]); glColor4fv(c); if (config_get_d(CONFIG_BACKGROUND)) { /* Draw all background layers back to front. */ sol_back(&back, BACK_DIST, FAR_DIST, t); back_draw(0); sol_back(&back, 0, BACK_DIST, t); /* Draw all foreground geometry in the background file. */ sol_draw(&back); } else back_draw(0); } glPopMatrix(); }
static void game_draw_back(struct s_rend *rend, const struct game_draw *gd, int pose, int d, float t) { if (pose == POSE_BALL) return; glPushMatrix(); { const struct game_view *view = &gd->view; if (d < 0) { const struct game_tilt *tilt = &gd->tilt; glRotatef(tilt->rz * 2, tilt->z[0], tilt->z[1], tilt->z[2]); glRotatef(tilt->rx * 2, tilt->x[0], tilt->x[1], tilt->x[2]); } glTranslatef(view->p[0], view->p[1] * d, view->p[2]); if (config_get_d(CONFIG_BACKGROUND)) { back_draw(rend); sol_back(&gd->back.draw, rend, 0, FAR_DIST, t); } else back_draw(rend); } glPopMatrix(); }