VBO switch also controls random-buildings.

This commit is contained in:
James Turner 2014-03-05 10:20:48 +00:00
parent aa27a09801
commit 18ff03acdf
3 changed files with 16 additions and 7 deletions

View File

@ -108,7 +108,7 @@ BuildingBoundingBoxCallback::computeBound(const Drawable& drawable) const
}
// Set up the building set based on the material definitions
SGBuildingBin::SGBuildingBin(const SGMaterial *mat) {
SGBuildingBin::SGBuildingBin(const SGMaterial *mat, bool useVBOs) {
material_name = new std::string(mat->get_names()[0]);
SG_LOG(SG_TERRAIN, SG_DEBUG, "Building material " << material_name);
@ -161,7 +161,11 @@ BuildingBoundingBoxCallback::computeBound(const Drawable& drawable) const
sharedGeometry->setFogCoordBinding(osg::Geometry::BIND_PER_VERTEX);
sharedGeometry->setComputeBoundingBoxCallback(new BuildingBoundingBoxCallback);
sharedGeometry->setUseDisplayList(false);
sharedGeometry->setDataVariance(osg::Object::STATIC);
if (useVBOs) {
sharedGeometry->setUseVertexBufferObjects(true);
}
for (unsigned int j = 0; j < BUILDING_SET_SIZE; j++) {
float width;
float depth;

View File

@ -168,7 +168,7 @@ private:
public:
SGBuildingBin(const SGMaterial *mat);
SGBuildingBin(const SGMaterial *mat, bool useVBOs);
~SGBuildingBin() {
smallBuildings.clear();

View File

@ -480,7 +480,8 @@ public:
SGMaterialLib* matlib,
float building_density,
bool use_random_objects,
bool use_random_buildings)
bool use_random_buildings,
bool useVBOs)
{
SGMaterialTriangleMap::iterator i;
@ -508,7 +509,7 @@ public:
SGBuildingBin* bin = NULL;
if (building_coverage > 0) {
bin = new SGBuildingBin(mat);
bin = new SGBuildingBin(mat, useVBOs);
randomBuildings.push_back(bin);
}
@ -1121,7 +1122,8 @@ public:
bool use_random_buildings = false;
float vegetation_density = 1.0f;
float building_density = 1.0f;
bool useVBOs = false;
osg::ref_ptr<osg::Group> randomObjects;
osg::ref_ptr<osg::Group> forestNode;
osg::ref_ptr<osg::Group> buildingNode;
@ -1146,6 +1148,8 @@ public:
= propertyNode->getFloatValue("/sim/rendering/building-density",
building_density);
}
useVBOs = (_options->getPluginStringData("SimGear::USE_VBOS") == "ON");
}
@ -1154,7 +1158,8 @@ public:
_tileGeometryBin->computeRandomObjectsAndBuildings(matlib,
building_density,
use_random_objects,
use_random_buildings);
use_random_buildings,
useVBOs);
}