diff --git a/ref/gl/gl_studio.c b/ref/gl/gl_studio.c index 6f31707d..0593c988 100644 --- a/ref/gl/gl_studio.c +++ b/ref/gl/gl_studio.c @@ -1905,6 +1905,43 @@ static void R_StudioDrawArrays( uint startverts, uint startelems ) pglDisableClientState( GL_COLOR_ARRAY ); } +/* +=============== +R_StudioSubmitMesh + +=============== +*/ +static void R_StudioSubmitMesh( short *ptricmds, vec3_t *pstudionorms, float s, float t, float shellscale, int tesslevel ) +{ + if( tesslevel > 0 ) + { + // R_StudioDrawTruformMesh( ptricmds, pstudionorms, s, t, shellscale, tesslevel ); + } + else if( r_studio_drawelements.value ) + { + uint startArrayVerts = g_studio.numverts; + uint startArrayElems = g_studio.numelems; + + if( FBitSet( g_nFaceFlags, STUDIO_NF_CHROME )) + R_StudioBuildArrayChromeMesh( ptricmds, pstudionorms, s, t, shellscale ); + else if( FBitSet( g_nFaceFlags, STUDIO_NF_UV_COORDS )) + R_StudioBuildArrayFloatMesh( ptricmds, pstudionorms ); + else + R_StudioBuildArrayNormalMesh( ptricmds, pstudionorms, s, t ); + + R_StudioDrawArrays( startArrayVerts, startArrayElems ); + } + else + { + if( FBitSet( g_nFaceFlags, STUDIO_NF_CHROME )) + R_StudioDrawChromeMesh( ptricmds, pstudionorms, s, t, shellscale ); + else if( FBitSet( g_nFaceFlags, STUDIO_NF_UV_COORDS )) + R_StudioDrawFloatMesh( ptricmds, pstudionorms ); + else + R_StudioDrawNormalMesh( ptricmds, pstudionorms, s, t ); + } +} + /* =============== R_StudioDrawPoints @@ -2041,8 +2078,6 @@ static void R_StudioDrawPoints( void ) for( int j = 0; j < m_pSubModel->nummesh; j++ ) { float oldblend = tr.blend; - uint startArrayVerts = g_studio.numverts; - uint startArrayElems = g_studio.numelems; pmesh = g_studio.meshes[j].mesh; short *ptricmds = (short *)((byte *)m_pStudioHeader + pmesh->triindex); @@ -2074,24 +2109,7 @@ static void R_StudioDrawPoints( void ) R_StudioSetupSkin( m_pStudioHeader, pskinref[pmesh->skinref] ); - if( r_studio_drawelements.value ) - { - if( FBitSet( g_nFaceFlags, STUDIO_NF_CHROME )) - R_StudioBuildArrayChromeMesh( ptricmds, pstudionorms, s, t, shellscale ); - else if( FBitSet( g_nFaceFlags, STUDIO_NF_UV_COORDS )) - R_StudioBuildArrayFloatMesh( ptricmds, pstudionorms ); - else R_StudioBuildArrayNormalMesh( ptricmds, pstudionorms, s, t ); - - R_StudioDrawArrays( startArrayVerts, startArrayElems ); - } - else - { - if( FBitSet( g_nFaceFlags, STUDIO_NF_CHROME )) - R_StudioDrawChromeMesh( ptricmds, pstudionorms, s, t, shellscale ); - else if( FBitSet( g_nFaceFlags, STUDIO_NF_UV_COORDS )) - R_StudioDrawFloatMesh( ptricmds, pstudionorms ); - else R_StudioDrawNormalMesh( ptricmds, pstudionorms, s, t ); - } + R_StudioSubmitMesh( ptricmds, pstudionorms, s, t, shellscale, 0 ); if( FBitSet( g_nFaceFlags, STUDIO_NF_MASKED )) {