Tile-manager can request VBOs.
Monitor /sim/rendering/use-vbos and pass the value into our SGReaderWriterOptions.
This commit is contained in:
parent
b76d255d82
commit
130f581b18
2 changed files with 33 additions and 2 deletions
|
@ -53,12 +53,37 @@
|
||||||
|
|
||||||
using flightgear::SceneryPager;
|
using flightgear::SceneryPager;
|
||||||
|
|
||||||
|
class FGTileMgr::TileManagerListener : public SGPropertyChangeListener
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TileManagerListener(FGTileMgr* manager) :
|
||||||
|
_manager(manager)
|
||||||
|
{
|
||||||
|
fgGetNode("/sim/rendering/use-vbos", true)->addChangeListener(this, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
~TileManagerListener()
|
||||||
|
{
|
||||||
|
fgGetNode("/sim/rendering/use-vbos")->removeChangeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void valueChanged(SGPropertyNode* prop)
|
||||||
|
{
|
||||||
|
bool useVBOs = prop->getBoolValue();
|
||||||
|
_manager->_options->setPluginStringData("SimGear::USE_VBOS",
|
||||||
|
useVBOs ? "ON" : "OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
FGTileMgr* _manager;
|
||||||
|
};
|
||||||
|
|
||||||
FGTileMgr::FGTileMgr():
|
FGTileMgr::FGTileMgr():
|
||||||
state( Start ),
|
state( Start ),
|
||||||
last_state( Running ),
|
last_state( Running ),
|
||||||
scheduled_visibility(100.0),
|
scheduled_visibility(100.0),
|
||||||
_terra_sync(NULL),
|
_terra_sync(NULL),
|
||||||
|
_listener(NULL),
|
||||||
_visibilityMeters(fgGetNode("/environment/visibility-m", true)),
|
_visibilityMeters(fgGetNode("/environment/visibility-m", true)),
|
||||||
_maxTileRangeM(fgGetNode("/sim/rendering/static-lod/bare", true)),
|
_maxTileRangeM(fgGetNode("/sim/rendering/static-lod/bare", true)),
|
||||||
_disableNasalHooks(fgGetNode("/sim/temp/disable-scenery-nasal", true)),
|
_disableNasalHooks(fgGetNode("/sim/temp/disable-scenery-nasal", true)),
|
||||||
|
@ -71,6 +96,8 @@ FGTileMgr::FGTileMgr():
|
||||||
|
|
||||||
FGTileMgr::~FGTileMgr()
|
FGTileMgr::~FGTileMgr()
|
||||||
{
|
{
|
||||||
|
delete _listener;
|
||||||
|
|
||||||
// remove all nodes we might have left behind
|
// remove all nodes we might have left behind
|
||||||
osg::Group* group = globals->get_scenery()->get_terrain_branch();
|
osg::Group* group = globals->get_scenery()->get_terrain_branch();
|
||||||
group->removeChildren(0, group->getNumChildren());
|
group->removeChildren(0, group->getNumChildren());
|
||||||
|
@ -84,6 +111,7 @@ void FGTileMgr::init() {
|
||||||
SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." );
|
SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." );
|
||||||
|
|
||||||
_options = new simgear::SGReaderWriterOptions;
|
_options = new simgear::SGReaderWriterOptions;
|
||||||
|
_listener = new TileManagerListener(this);
|
||||||
|
|
||||||
materialLibChanged();
|
materialLibChanged();
|
||||||
_options->setPropertyNode(globals->get_props());
|
_options->setPropertyNode(globals->get_props());
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include <simgear/structure/subsystem_mgr.hxx>
|
#include <simgear/structure/subsystem_mgr.hxx>
|
||||||
#include <simgear/bucket/newbucket.hxx>
|
#include <simgear/bucket/newbucket.hxx>
|
||||||
#include "SceneryPager.hxx"
|
#include "SceneryPager.hxx"
|
||||||
#include "tileentry.hxx"
|
|
||||||
#include "tilecache.hxx"
|
#include "tilecache.hxx"
|
||||||
|
|
||||||
namespace osg
|
namespace osg
|
||||||
|
@ -76,7 +75,11 @@ private:
|
||||||
*/
|
*/
|
||||||
TileCache tile_cache;
|
TileCache tile_cache;
|
||||||
simgear::SGTerraSync* _terra_sync;
|
simgear::SGTerraSync* _terra_sync;
|
||||||
|
|
||||||
|
class TileManagerListener;
|
||||||
|
friend class TileManagerListener;
|
||||||
|
TileManagerListener* _listener;
|
||||||
|
|
||||||
// update various queues internal queues
|
// update various queues internal queues
|
||||||
void update_queues(bool& isDownloadingScenery);
|
void update_queues(bool& isDownloadingScenery);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue