Fix terrain derived data update (bug 534, bug 544)

This commit is contained in:
scrawl 2013-02-04 23:13:01 +01:00
parent 7b1b0ec41c
commit 596628d339

View file

@ -3,6 +3,7 @@
#include <OgreTerrain.h>
#include <OgreTerrainGroup.h>
#include <OgreHardwarePixelBuffer.h>
#include <OgreRoot.h>
#include "../mwworld/esmstore.hpp"
@ -151,6 +152,16 @@ namespace MWRender
mTerrainGroup.loadTerrain(terrainX, terrainY, true);
// when loading from a heightmap, Ogre::Terrain does not update the derived data (normal map, LOD)
// synchronously, even if we supply synchronous = true parameter to loadTerrain.
// the following to be the only way to make sure derived data is ready when rendering the next frame.
while (mTerrainGroup.isDerivedDataUpdateInProgress())
{
// we need to wait for this to finish
OGRE_THREAD_SLEEP(5);
Root::getSingleton().getWorkQueue()->processResponses();
}
Terrain* terrain = mTerrainGroup.getTerrain(terrainX, terrainY);
initTerrainBlendMaps(terrain,
cellX, cellY,