GeometryTechnique
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSGTERRAIN_GEOMETRYTECHNIQUE
#define OSGTERRAIN_GEOMETRYTECHNIQUE 1
#include <osg/MatrixTransform>
#include <osg/Geode>
#include <osg/Geometry>
#include <osgTerrain/TerrainTechnique>
#include <osgTerrain/Locator>
namespace osgTerrain {
class OSGTERRAIN_EXPORT GeometryTechnique : public TerrainTechnique
{
public:
GeometryTechnique();
GeometryTechnique(const GeometryTechnique&,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
META_Object(osgTerrain, GeometryTechnique);
virtual void init(int dirtyMask, bool assumeMultiThreaded);
virtual Locator* computeMasterLocator();
virtual void update(osgUtil::UpdateVisitor* nv);
virtual void cull(osgUtil::CullVisitor* nv);
virtual void traverse(osg::NodeVisitor& nv);
virtual void cleanSceneGraph();
void setFilterBias(float filterBias);
float getFilterBias() const { return _filterBias; }
void setFilterWidth(float filterWidth);
float getFilterWidth() const { return _filterWidth; }
void setFilterMatrix(const osg::Matrix3& matrix);
osg::Matrix3& getFilterMatrix() { return _filterMatrix; }
const osg::Matrix3& getFilterMatrix() const { return _filterMatrix; }
enum FilterType
{
GAUSSIAN,
SMOOTH,
SHARPEN
};
void setFilterMatrixAs(FilterType filterType);
virtual void releaseGLObjects(osg::State* = 0) const;
protected:
virtual ~GeometryTechnique();
class BufferData : public osg::Referenced
{
public:
BufferData() {}
osg::ref_ptr<osg::MatrixTransform> _transform;
osg::ref_ptr<osg::Geode> _geode;
osg::ref_ptr<osg::Geometry> _geometry;
protected:
~BufferData() {}
};
virtual osg::Vec3d computeCenterModel(BufferData& buffer, Locator* masterLocator);
virtual void generateGeometry(BufferData& buffer, Locator* masterLocator, const osg::Vec3d& centerModel);
virtual void applyColorLayers(BufferData& buffer);
virtual void applyTransparency(BufferData& buffer);
OpenThreads::Mutex _writeBufferMutex;
osg::ref_ptr<BufferData> _currentBufferData;
osg::ref_ptr<BufferData> _newBufferData;
float _filterBias;
osg::ref_ptr<osg::Uniform> _filterBiasUniform;
float _filterWidth;
osg::ref_ptr<osg::Uniform> _filterWidthUniform;
osg::Matrix3 _filterMatrix;
osg::ref_ptr<osg::Uniform> _filterMatrixUniform;
};
}
#endif
Geode
Geometry
MatrixTransform
TerrainTechnique
OpenThreads::Mutex
This class provides an object-oriented thread mutex interface.
Definition Mutex:31
osgTerrain::GeometryTechnique::BufferData
Definition GeometryTechnique:81
osgTerrain::GeometryTechnique::BufferData::_geode
osg::ref_ptr< osg::Geode > _geode
Definition GeometryTechnique:86
osgTerrain::GeometryTechnique::BufferData::_transform
osg::ref_ptr< osg::MatrixTransform > _transform
Definition GeometryTechnique:85
osgTerrain::GeometryTechnique::BufferData::_geometry
osg::ref_ptr< osg::Geometry > _geometry
Definition GeometryTechnique:87
osgTerrain::GeometryTechnique::BufferData::~BufferData
~BufferData()
Definition GeometryTechnique:90
osgTerrain::GeometryTechnique::BufferData::BufferData
BufferData()
Definition GeometryTechnique:83
osgTerrain::GeometryTechnique::applyTransparency
virtual void applyTransparency(BufferData &buffer)
osgTerrain::GeometryTechnique::getFilterBias
float getFilterBias() const
Definition GeometryTechnique:52
osgTerrain::GeometryTechnique::_filterBiasUniform
osg::ref_ptr< osg::Uniform > _filterBiasUniform
Definition GeometryTechnique:107
osgTerrain::GeometryTechnique::_filterMatrix
osg::Matrix3 _filterMatrix
Definition GeometryTechnique:110
osgTerrain::GeometryTechnique::setFilterWidth
void setFilterWidth(float filterWidth)
osgTerrain::GeometryTechnique::GeometryTechnique
GeometryTechnique()
osgTerrain::GeometryTechnique::releaseGLObjects
virtual void releaseGLObjects(osg::State *=0) const
osgTerrain::GeometryTechnique::applyColorLayers
virtual void applyColorLayers(BufferData &buffer)
osgTerrain::GeometryTechnique::getFilterWidth
float getFilterWidth() const
Definition GeometryTechnique:55
osgTerrain::GeometryTechnique::traverse
virtual void traverse(osg::NodeVisitor &nv)
osgTerrain::GeometryTechnique::_filterWidth
float _filterWidth
Definition GeometryTechnique:108
osgTerrain::GeometryTechnique::computeCenterModel
virtual osg::Vec3d computeCenterModel(BufferData &buffer, Locator *masterLocator)
osgTerrain::GeometryTechnique::_currentBufferData
osg::ref_ptr< BufferData > _currentBufferData
Definition GeometryTechnique:103
osgTerrain::GeometryTechnique::update
virtual void update(osgUtil::UpdateVisitor *nv)
osgTerrain::GeometryTechnique::META_Object
META_Object(osgTerrain, GeometryTechnique)
osgTerrain::GeometryTechnique::GeometryTechnique
GeometryTechnique(const GeometryTechnique &, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
osgTerrain::GeometryTechnique::getFilterMatrix
const osg::Matrix3 & getFilterMatrix() const
Definition GeometryTechnique:59
osgTerrain::GeometryTechnique::~GeometryTechnique
virtual ~GeometryTechnique()
osgTerrain::GeometryTechnique::generateGeometry
virtual void generateGeometry(BufferData &buffer, Locator *masterLocator, const osg::Vec3d &centerModel)
osgTerrain::GeometryTechnique::setFilterMatrixAs
void setFilterMatrixAs(FilterType filterType)
osgTerrain::GeometryTechnique::setFilterMatrix
void setFilterMatrix(const osg::Matrix3 &matrix)
osgTerrain::GeometryTechnique::FilterType
FilterType
Definition GeometryTechnique:62
osgTerrain::GeometryTechnique::SMOOTH
@ SMOOTH
Definition GeometryTechnique:64
osgTerrain::GeometryTechnique::SHARPEN
@ SHARPEN
Definition GeometryTechnique:65
osgTerrain::GeometryTechnique::GAUSSIAN
@ GAUSSIAN
Definition GeometryTechnique:63
osgTerrain::GeometryTechnique::_filterBias
float _filterBias
Definition GeometryTechnique:106
osgTerrain::GeometryTechnique::cull
virtual void cull(osgUtil::CullVisitor *nv)
osgTerrain::GeometryTechnique::_filterMatrixUniform
osg::ref_ptr< osg::Uniform > _filterMatrixUniform
Definition GeometryTechnique:111
osgTerrain::GeometryTechnique::_filterWidthUniform
osg::ref_ptr< osg::Uniform > _filterWidthUniform
Definition GeometryTechnique:109
osgTerrain::GeometryTechnique::cleanSceneGraph
virtual void cleanSceneGraph()
osgTerrain::GeometryTechnique::setFilterBias
void setFilterBias(float filterBias)
osgTerrain::GeometryTechnique::_writeBufferMutex
OpenThreads::Mutex _writeBufferMutex
Definition GeometryTechnique:102
osgTerrain::GeometryTechnique::getFilterMatrix
osg::Matrix3 & getFilterMatrix()
Definition GeometryTechnique:58
osgTerrain::GeometryTechnique::init
virtual void init(int dirtyMask, bool assumeMultiThreaded)
osgTerrain::GeometryTechnique::computeMasterLocator
virtual Locator * computeMasterLocator()
osgTerrain::GeometryTechnique::_newBufferData
osg::ref_ptr< BufferData > _newBufferData
Definition GeometryTechnique:104
osgTerrain::Locator
Definition osgTerrain/Locator:26
osgTerrain::TerrainTechnique::TerrainTechnique
TerrainTechnique()
osgUtil::CullVisitor
Definition CullVisitor:49
osgUtil::UpdateVisitor
Definition UpdateVisitor:38
osg::CopyOp
Definition CopyOp:41
osg::CopyOp::SHALLOW_COPY
@ SHALLOW_COPY
Definition CopyOp:47
osg::NodeVisitor
Definition NodeVisitor:82
osg::Referenced
Definition Referenced:44
osg::State
Definition State:80
osg::Vec3d
Definition Vec3d:30
osg::ref_ptr
Definition ref_ptr:32
osgTerrain
Definition Node:29
osg::Matrix3
Matrix3Template< float > Matrix3
Definition Uniform:390
OSGTERRAIN_EXPORT
#define OSGTERRAIN_EXPORT
Definition osgTerrain/Export:39
Locator