#include <osgViewer/GraphicsWindow>
#include <osgViewer/Renderer>
+namespace flightgear {
+const char* MAIN_CAMERA = "MAIN_CAMERA";
+const char* FAR_CAMERA = "FAR_CAMERA";
+const char* GEOMETRY_CAMERA = "GEOMETRY_CAMERA";
+const char* SHADOW_CAMERA = "SHADOW_CAMERA";
+const char* LIGHTING_CAMERA = "LIGHTING_CAMERA";
+const char* DISPLAY_CAMERA = "DISPLAY_CAMERA";
+}
+
static osg::Matrix
invert(const osg::Matrix& matrix)
{
}
}
-osg::Camera* CameraInfo::getCamera(CameraKind k) const
+osg::Camera* CameraInfo::getCamera(const std::string& k) const
{
CameraMap::const_iterator ii = cameras.find( k );
if (ii == cameras.end())
bool resizable;
};
-enum CameraKind {
- MAIN_CAMERA,
- FAR_CAMERA,
- GEOMETRY_CAMERA,
- SHADOW_CAMERA,
- BLOOM_CAMERA_1,
- BLOOM_CAMERA_2,
- AO_CAMERA_1,
- AO_CAMERA_2,
- AO_CAMERA_3,
- LIGHTING_CAMERA,
- DISPLAY_CAMERA
-};
-typedef std::map<CameraKind,RenderStageInfo> CameraMap;
+extern const char* MAIN_CAMERA;
+extern const char* FAR_CAMERA;
+extern const char* GEOMETRY_CAMERA;
+extern const char* SHADOW_CAMERA;
+extern const char* LIGHTING_CAMERA;
+extern const char* DISPLAY_CAMERA;
+
+typedef std::map<std::string,RenderStageInfo> CameraMap;
/** A wrapper around osg::Camera that contains some extra information.
*/
/** the camera objects
*/
CameraMap cameras;
- void addCamera( CameraKind k, osg::Camera* c, int si = -1, bool fs = false ) { cameras[k].camera = c; cameras[k].slaveIndex = si; cameras[k].fullscreen = fs; }
- void addCamera( CameraKind k, osg::Camera* c, bool fs ) { cameras[k].camera = c; cameras[k].fullscreen = fs; }
- void addCamera( CameraKind k, osg::Camera* c, float s ) { cameras[k].camera = c; cameras[k].scaleFactor = s; }
- osg::Camera* getCamera(CameraKind k) const;
+ void addCamera( const std::string& k, osg::Camera* c, int si = -1, bool fs = false ) { cameras[k].camera = c; cameras[k].slaveIndex = si; cameras[k].fullscreen = fs; }
+ void addCamera( const std::string& k, osg::Camera* c, bool fs ) { cameras[k].camera = c; cameras[k].fullscreen = fs; }
+ void addCamera( const std::string& k, osg::Camera* c, float s ) { cameras[k].camera = c; cameras[k].scaleFactor = s; }
+ osg::Camera* getCamera(const std::string& k) const;
int getMainSlaveIndex() const;
- RenderStageInfo& getRenderStageInfo( CameraKind k ) { return cameras[k]; }
+ RenderStageInfo& getRenderStageInfo( const std::string& k ) { return cameras[k]; }
/** the buffer objects
*/
class FGDeferredRenderingCameraCullCallback : public osg::NodeCallback {
public:
- FGDeferredRenderingCameraCullCallback( flightgear::CameraKind k, CameraInfo* i ) : kind( k ), info( i ) {}
+ FGDeferredRenderingCameraCullCallback( const std::string& k, CameraInfo* i ) : kind( k ), info( i ) {}
virtual void operator()( osg::Node *n, osg::NodeVisitor *nv) {
simgear::EffectCullVisitor* cv = dynamic_cast<simgear::EffectCullVisitor*>(nv);
osg::Camera* camera = static_cast<osg::Camera*>(n);
}
private:
- flightgear::CameraKind kind;
+ std::string kind;
CameraInfo* info;
};
info->getBuffer("shadow")->setTextureSize(shadowMapSize,shadowMapSize);
}
-void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, flightgear::CameraKind ck, const std::string& bk )
+void attachBufferToCamera( flightgear::CameraInfo* info, osg::Camera* camera, osg::Camera::BufferComponent c, const std::string& ck, const std::string& bk )
{
camera->attach( c, info->getBuffer(bk) );
info->getRenderStageInfo(ck).buffers.insert( std::make_pair( c, bk ) );