Moved intial cut of depth partition support into osgViewer::View via two new methods:

/** Convenience method for setting up multiple slave cameras that depth partition the specified camera.*/
        bool setUpDepthPartitionForCamera(osg::Camera* cameraToPartition, DepthPartitionSettings* dps=0);

        /** Convenience method for setting up multiple slave cameras that depth partition each of the view's active cameras.*/
        bool setUpDepthPartition(DepthPartitionSettings* dsp=0);
This commit is contained in:
Robert Osfield
2011-03-03 15:52:19 +00:00
parent be31cdb328
commit afecdbb46b
3 changed files with 325 additions and 299 deletions

View File

@@ -30,6 +30,26 @@
namespace osgViewer {
struct OSGVIEWER_EXPORT DepthPartitionSettings : public osg::Referenced
{
enum DepthMode
{
FIXED_RANGE,
BOUNDING_VOLUME
};
DepthPartitionSettings(DepthMode mode=BOUNDING_VOLUME);
virtual bool getDepthRange(osg::View& view, unsigned int partition, double& zNear, double& zFar);
DepthMode _mode;
double _zNear;
double _zMid;
double _zFar;
};
/** View holds a single view on a scene, this view may be composed of one or more slave cameras.*/
class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter
{
@@ -183,6 +203,13 @@ class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter
void setUpViewForWoWVxDisplay(unsigned int screenNum, unsigned char wow_content, unsigned char wow_factor, unsigned char wow_offset, float wow_disparity_Zd, float wow_disparity_vz, float wow_disparity_M, float wow_disparity_C);
/** Convenience method for setting up multiple slave cameras that depth partition the specified camera.*/
bool setUpDepthPartitionForCamera(osg::Camera* cameraToPartition, DepthPartitionSettings* dps=0);
/** Convenience method for setting up multiple slave cameras that depth partition each of the view's active cameras.*/
bool setUpDepthPartition(DepthPartitionSettings* dsp=0);
/** Return true if this view contains a specified camera.*/
bool containsCamera(const osg::Camera* camera) const;