From 9c398cd34327e8e32fe7ce7753550ddf1bdf10d3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 28 Nov 2018 18:41:58 +0100 Subject: [PATCH] - fixed: P_Recalculate3DFloors may not be called before the vertex buffer has been set up. Since this function creates dynamic copies for 3D floors that need to be split it requires the vertex buffer index to be set up. In older versions this did not produce errors because there was a fallback render path that was less efficient. Now with that fallback removed this resulted in temporary 3D floors being created without valid vertex data. --- src/p_3dfloors.cpp | 5 ----- src/p_setup.cpp | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp index 4d9984eaa..732866c5b 100644 --- a/src/p_3dfloors.cpp +++ b/src/p_3dfloors.cpp @@ -891,11 +891,6 @@ void P_Spawn3DFloors (void) line.special=0; line.args[0] = line.args[1] = line.args[2] = line.args[3] = line.args[4] = 0; } - // kg3D - do it in software - for (auto &sec : level.sectors) - { - P_Recalculate3DFloors(&sec); - } } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 8d502b42b..9b65e69e3 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -4116,6 +4116,12 @@ void P_SetupLevel(const char *lumpname, int position, bool newGame) // This must be done BEFORE the PolyObj Spawn!!! InitRenderInfo(); // create hardware independent renderer resources for the level. screen->mVertexData->CreateVBO(); + + for (auto &sec : level.sectors) + { + P_Recalculate3DFloors(&sec); + } + SWRenderer->SetColormap(); //The SW renderer needs to do some special setup for the level's default colormap. InitPortalGroups(); P_InitHealthGroups();