Removed hardware down sampling hack from GeoemtryTechnique and replaced with Terrain::g/setSampleRatio()

usage.
This commit is contained in:
Robert Osfield
2008-04-22 11:39:47 +00:00
parent 37bea2727b
commit 234bfeb648
4 changed files with 22 additions and 7 deletions

View File

@@ -13,6 +13,7 @@
#include <osgTerrain/GeometryTechnique>
#include <osgTerrain/TerrainTile>
#include <osgTerrain/Terrain>
#include <osgUtil/SmoothingVisitor>
@@ -228,23 +229,25 @@ void GeometryTechnique::generateGeometry(Locator* masterLocator, const osg::Vec3
numRows = elevationLayer->getNumRows();
}
float sampleRatio = _terrainTile->getTerrain() ? _terrainTile->getTerrain()->getSampleRatio() : 1.0f;
double i_sampleFactor = 1.0;
double j_sampleFactor = 1.0;
unsigned int targetSize = 32;
if (numColumns==64 && numColumns>targetSize)
if (sampleRatio!=1.0f)
{
unsigned int originalNumColumns = numColumns;
unsigned int originalNumRows = numRows;
numColumns = targetSize;
numRows = targetSize;
numColumns = std::max((unsigned int) (float(originalNumColumns)*sqrtf(sampleRatio)), 4u);
numRows = std::max((unsigned int) (float(originalNumRows)*sqrtf(sampleRatio)),4u);
i_sampleFactor = double(originalNumColumns-1)/double(numColumns-1);
j_sampleFactor = double(originalNumRows-1)/double(numRows-1);
}
bool treatBoundariesToValidDataAsDefaultValue = _terrainTile->getTreatBoundariesToValidDataAsDefaultValue();
osg::notify(osg::INFO)<<"TreatBoundariesToValidDataAsDefaultValue="<<treatBoundariesToValidDataAsDefaultValue<<std::endl;

View File

@@ -17,12 +17,14 @@
using namespace osg;
using namespace osgTerrain;
Terrain::Terrain()
Terrain::Terrain():
_sampleRatio(1.0)
{
}
Terrain::Terrain(const Terrain& ts, const osg::CopyOp& copyop):
osg::Group(ts,copyop)
osg::Group(ts,copyop),
_sampleRatio(ts._sampleRatio)
{
}