/* ===================== CG_DrawActive Perform all drawing needed to completely fill the screen ===================== */ void CG_DrawActive() { // optionally draw the info screen instead if ( !cg.snap ) { return; } // clear around the rendered view if sized down CG_TileClear(); CG_DrawBinaryShadersFinalPhases(); // draw 3D view trap_R_RenderScene( &cg.refdef ); // first person blend blobs, done after AnglesToAxis if ( !cg.renderingThirdPerson ) { CG_PainBlend(); } // draw status bar and other floating elements CG_Draw2D(); }
/* ===================== CG_DrawActive Perform all drawing needed to completely fill the screen ===================== */ void CG_DrawActive( stereoFrame_t stereoView ) { float separation; vec3_t baseOrg; // optionally draw the info screen instead if ( !cg.snap ) { return; } switch ( stereoView ) { case STEREO_CENTER: separation = 0; break; default: separation = 0; CG_Error( "CG_DrawActive: Undefined stereoView" ); } // clear around the rendered view if sized down CG_TileClear(); // offset vieworg appropriately if we're doing stereo separation VectorCopy( cg.refdef.vieworg, baseOrg ); if ( separation != 0 ) { VectorMA( cg.refdef.vieworg, -separation, cg.refdef.viewaxis[ 1 ], cg.refdef.vieworg ); } CG_DrawBinaryShadersFinalPhases(); // draw 3D view trap_R_RenderScene( &cg.refdef ); // restore original viewpoint if running stereo if ( separation != 0 ) { VectorCopy( baseOrg, cg.refdef.vieworg ); } // first person blend blobs, done after AnglesToAxis if ( !cg.renderingThirdPerson ) { CG_PainBlend(); } // draw status bar and other floating elements CG_Draw2D(); }