⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cameraconfig.h

📁 最新osg包
💻 H
字号:
/* -*-c++-*- Producer - Copyright (C) 2001-2004  Don Burns * * 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 PRODUCER_CAMERA_CONFIG#define PRODUCER_CAMERA_CONFIG#include <stdio.h>#include <osg/Referenced>#include <osg/Matrix>#include <osgViewer/View>#include <string>#include <map>#include <vector>#include <osg/Notify>#include <osg/Vec2>#include <iostream>#include "Camera.h"#include "RenderSurface.h"//#undef SUPPORT_CPPnamespace osgProducer {#define notImplemented {std::cout << __FILE__ << " " << __LINE__ << std::endl;}  class CameraGroup : public osg::Referenced {  public:    enum ThreadModel {      SingleThreaded,      ThreadPerRenderSurface,      ThreadPerCamera,    };    static ThreadModel getDefaultThreadModel() { return SingleThreaded;}  };  class InputArea : public osg::Referenced {  public:    void addRenderSurface(RenderSurface* s) { _rs.push_back(s); }    std::vector<osg::ref_ptr<RenderSurface> > _rs;  };#undef notImplementedclass CameraConfig : public osg::Referenced{    public :        CameraConfig();         void beginVisual( void );        void beginVisual( const char * name );        void setVisualSimpleConfiguration( void );        void setVisualByID( unsigned int id );        void addVisualAttribute( VisualChooser::AttributeName token, int param );        void addVisualAttribute( VisualChooser::AttributeName token );        void addVisualExtendedAttribute( unsigned int token );        void addVisualExtendedAttribute( unsigned int token, int param );        void endVisual( void );        VisualChooser *findVisual( const char *name );        bool parseFile( const std::string &file );        void beginRenderSurface( const char *name );        void setRenderSurfaceVisualChooser( const char *name );        void setRenderSurfaceVisualChooser( void );        void setRenderSurfaceWindowRectangle( int x, int y,  unsigned int width, unsigned int height );        void setRenderSurfaceCustomFullScreenRectangle( int x, int y, unsigned int width, unsigned int height );        void setRenderSurfaceOverrideRedirect( bool flag );        void setRenderSurfaceHostName( const std::string &name );        void setRenderSurfaceDisplayNum( int n );        void setRenderSurfaceScreen( int n );        void setRenderSurfaceBorder( bool flag );        void setRenderSurfaceDrawableType( RenderSurface::DrawableType drawableType );        void setRenderSurfaceRenderToTextureMode( RenderSurface::RenderToTextureMode rttMode );        void setRenderSurfaceReadDrawable( const char *name );        void setRenderSurfaceInputRectangle( float x0, float x1, float y0, float y1 );        void endRenderSurface( void );        RenderSurface *findRenderSurface( const char *name );        unsigned int getNumberOfRenderSurfaces();        RenderSurface *getRenderSurface( unsigned int index );        void addCamera( std::string name, Camera *camera );        void beginCamera( std::string name );        void setCameraRenderSurface( const char *name );        void setCameraRenderSurface( void );        void setCameraProjectionRectangle( float x0, float x1, float y0, float y1 );        void setCameraProjectionRectangle( int x0, int x1, int y0, int y1 );        void setCameraOrtho( float left, float right, float bottom, float top, float nearClip, float farClip,                                float xshear=0.0, float yshear=0.0 );        void setCameraPerspective( float hfov, float vfov, float nearClip, float farClip,                                float xshear=0.0, float yshear=0.0 );        void setCameraFrustum( float left, float right, float bottom, float top, float nearClip, float farClip,                                float xshear=0.0, float yshear=0.0 );        void setCameraLensShear( osg::Matrix::value_type xshear, osg::Matrix::value_type yshear );                void setCameraShareLens( bool shared );        void setCameraShareView( bool shared );        void setCameraClearColor( float r, float g, float b, float a );        void beginCameraOffset();        void rotateCameraOffset( osg::Matrix::value_type deg, osg::Matrix::value_type x, osg::Matrix::value_type y, osg::Matrix::value_type z );        void translateCameraOffset( osg::Matrix::value_type x, osg::Matrix::value_type y, osg::Matrix::value_type z );        void scaleCameraOffset( osg::Matrix::value_type x, osg::Matrix::value_type y, osg::Matrix::value_type z );        void shearCameraOffset( osg::Matrix::value_type shearx, osg::Matrix::value_type sheary );        void setCameraOffsetMultiplyMethod( Camera::Offset::MultiplyMethod method );        void endCameraOffset();        void  endCamera( void );        Camera *findCamera( const char *name );        unsigned int getNumberOfCameras() const;                const Camera *getCamera( unsigned int n ) const;        Camera *getCamera( unsigned int n );        void beginInputArea();        void addInputAreaEntry( char *renderSurfaceName );        void endInputArea() ;        void setInputArea(InputArea *ia);        InputArea *getInputArea();        const InputArea *getInputArea() const;        void realize( void );        bool defaultConfig();        struct StereoSystemCommand        {            int _screen;            std::string _setStereoCommand;            std::string _restoreMonoCommand;            StereoSystemCommand(int screen, std::string setStereoCommand, std::string restoreMonoCommand ):                _screen(screen),                _setStereoCommand(setStereoCommand),                _restoreMonoCommand(restoreMonoCommand) {}        };        static std::string findFile( std::string );        void addStereoSystemCommand( int screen, std::string stereoCmd, std::string monoCmd );        const std::vector<StereoSystemCommand> &getStereoSystemCommands();        void setThreadModelDirective( CameraGroup::ThreadModel directive ) { _threadModelDirective = directive; }        CameraGroup::ThreadModel getThreadModelDirective() { return _threadModelDirective; }    protected:        virtual ~CameraConfig();    private :        std::map <std::string, VisualChooser *> _visual_map;        osg::ref_ptr< VisualChooser >_current_visual_chooser;        bool _can_add_visual_attributes;        std::map <std::string,  osg::ref_ptr<RenderSurface > > _render_surface_map;        osg::ref_ptr<RenderSurface> _current_render_surface;        bool _can_add_render_surface_attributes;        std::map <std::string,  osg::ref_ptr< Camera > > _camera_map;        osg::ref_ptr<Camera> _current_camera;        bool _can_add_camera_attributes;        osg::ref_ptr< InputArea > _input_area;        bool _can_add_input_area_entries;        unsigned int getNumberOfScreens();        osg::Matrix::value_type  _offset_matrix[16];        osg::Matrix::value_type _offset_shearx, _offset_sheary;        std::vector<StereoSystemCommand> _stereoSystemCommands;        bool _postmultiply;        CameraGroup::ThreadModel _threadModelDirective;};};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -