From 3705dcfeb9af6317dafb48686997da5d2b681436 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Tue, 30 Oct 2018 20:21:16 -0500 Subject: [PATCH] Fix over allocating vertexes for OBJ models with multiple surfaces Loading Wavefront OBJ models in picomodel (used by radiant and q3map2) did not reset the surface vertex index when starting a new surface. This caused there to be unused vertexes, equal to the number of vertexes in all previous surfaces, at the beginning of each surface. Exponential OBJ vertex memory usage as number of surfaces increases. It did not affect displaying or processing the surface faces. --- libs/picomodel/pm_obj.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/picomodel/pm_obj.c b/libs/picomodel/pm_obj.c index e342ab08..32bdbd25 100644 --- a/libs/picomodel/pm_obj.c +++ b/libs/picomodel/pm_obj.c @@ -524,8 +524,9 @@ static picoModel_t *_obj_load( PM_PARAMS_LOAD ){ newSurface = PicoNewSurface( model ); \ if ( newSurface == NULL ) { \ _obj_error_return( "Error allocating surface" ); } \ - /* reset face index for surface */ \ + /* reset face index and vertex index for surface */ \ curFace = 0; \ + curVertex = 0; \ /* if we can, assign the previous shader to this surface */ \ if ( curSurface ) { \ PicoSetSurfaceShader( newSurface, curSurface->shader ); } \