From de0b8052feb6bdc5283b4ed5fc8f19663e1a1d48 Mon Sep 17 00:00:00 2001 From: savis <106487343+savisxss@users.noreply.github.com> Date: Sat, 3 Jan 2026 20:38:10 +0100 Subject: [PATCH] Batch terrain texture loading - Pre-request all textures for async loading - Reduces sequential blocking during terrain load --- src/PRTerrainLib/TextureSet.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/PRTerrainLib/TextureSet.cpp b/src/PRTerrainLib/TextureSet.cpp index 0016cc7..7f9d6f3 100644 --- a/src/PRTerrainLib/TextureSet.cpp +++ b/src/PRTerrainLib/TextureSet.cpp @@ -56,6 +56,27 @@ bool CTextureSet::Load(const char * c_szTextureSetFileName, float fTerrainTexCoo m_Textures.resize(lCount + 1); + std::vector textureFiles; + textureFiles.reserve(lCount); + + for (long i = 0; i < lCount; ++i) + { + _snprintf(szTextureName, sizeof(szTextureName), "texture%03d", i + 1); + + if (stTokenVectorMap.end() == stTokenVectorMap.find(szTextureName)) + continue; + + const CTokenVector & rVector = stTokenVectorMap[szTextureName]; + const std::string & c_rstrFileName = rVector[0].c_str(); + + textureFiles.push_back(c_rstrFileName); + } + + for (const auto& filename : textureFiles) + { + CResourceManager::Instance().GetResourcePointer(filename.c_str()); + } + for (long i = 0; i < lCount; ++i) { _snprintf(szTextureName, sizeof(szTextureName), "texture%03d", i + 1);