diff --git a/src/osgTerrain/GeometryTechnique.cpp b/src/osgTerrain/GeometryTechnique.cpp index ff4b9621c..f1d511f5e 100644 --- a/src/osgTerrain/GeometryTechnique.cpp +++ b/src/osgTerrain/GeometryTechnique.cpp @@ -23,6 +23,7 @@ #include #include #include +#include using namespace osgTerrain; @@ -175,7 +176,7 @@ void GeometryTechnique::init() if (_geometry.valid()) _geometry->setTexCoordArray(color_index, _texcoords); } - osg::FloatArray* _elevations = 0; + osg::FloatArray* _elevations = new osg::FloatArray(numVertices); osg::TransferFunction1D* tf = dynamic_cast(colorTF); if (tf) { @@ -184,7 +185,7 @@ void GeometryTechnique::init() if (!colorLayer) { - _elevations = new osg::FloatArray(numVertices); + // _elevations = new osg::FloatArray(numVertices); if (_terrainGeometry.valid()) _terrainGeometry->setTexCoords(tf_index, _elevations); if (_geometry.valid()) _geometry->setTexCoordArray(tf_index, _elevations); @@ -257,21 +258,73 @@ void GeometryTechnique::init() } } + // populate primitive sets - // _primitiveSets.clear(); - for(j=0; jaddPrimitiveSet(elements); + + if (_geometry.valid()) _geometry->addPrimitiveSet(elements); } + } + else + { + osg::notify(osg::NOTICE)<<"New tesselation"<reserve((numRows-1) * (numColumns-1) * 6); if (_terrainGeometry.valid()) _terrainGeometry->addPrimitiveSet(elements); - if (_geometry.valid()) _geometry->addPrimitiveSet(elements); + + for(j=0; jpush_back(i01); + elements->push_back(i00); + elements->push_back(i11); + + elements->push_back(i00); + elements->push_back(i10); + elements->push_back(i11); + } + else + { + elements->push_back(i01); + elements->push_back(i00); + elements->push_back(i10); + + elements->push_back(i01); + elements->push_back(i10); + elements->push_back(i11); + } + } + } } if (colorLayer)