/* Main rendering loop */ void gl_render() { vector_t tmp; gl_3d(); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); cl_viewangles(tmp); v_invert(tmp); glRotatef(tmp[PITCH], 1, 0, 0); glRotatef(tmp[YAW], 0, 1, 0); glRotatef(tmp[ROLL], 0, 0, 1); cl_origin(tmp); v_invert(tmp); glTranslatef(tmp[X], tmp[Y], tmp[Z]); cl_render(); /* Render 2d stuff (hud/console etc.) */ gl_2d(); blend_render(); hud_render(); /* w00t */ SDL_GL_SwapBuffers(); }
//--------------------------------------------------------------------------- // updateChannel //--------------------------------------------------------------------------- void updateChannel( MPKChannel *c, void *data ) { FrameData *framedata = (FrameData *)data; MPKWindow *w = mpkChannelGetWindow(c); void *wdata = mpkWindowGetUserData(w); r_context_t *r_context = (r_context_t *)wdata; glMatrixMode( GL_PROJECTION ); glLoadIdentity(); mpkChannelApplyFrustum( c ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); mpkChannelApplyTransformation( c ); mpkChannelGetRange( c, r_context->range ); r_context->r_frametime = framedata->time; r_context->r_eyecluster = framedata->r_eyecluster; r_context->r_eyepos[0] = framedata->r_eyepos[0]; r_context->r_eyepos[1] = framedata->r_eyepos[1]; r_context->r_eyepos[2] = framedata->r_eyepos[2]; r_context->r_eye_az = framedata->r_eye_az; r_context->r_eye_el = framedata->r_eye_el; render_draw(r_context); if (r_context->range[1] == 1.0) hud_render(r_context); }
static void display(void) { double time; time = (double) SDL_GetTicks() / 1000.0 - starttime; ui_move(time); ui_display(r_context, time); hud_render(r_context); SDL_GL_SwapBuffers(); }