OSG教程:情境儲存基類ViewerBase

來源:互聯網
上載者:User

選自《OSG程式設計教程》第二章第四節

    osgViewer::ViewerBase

    類描述:是view的基本類,同時也是osgViewer::CompositeViewer和osgViewer::Viewer的父類。 類繼承圖:由於是osgViewer::Viewer的父類,所以它的方法一般都會提供給osgVIewer::Viewer使用,而且非常重要。

    類中方法:

     ViewerBase () ViewerBase (const ViewerBase &vb)

    說明:建構函式。第二個建構函式為從一個已知的ViewerBase中建立新ViewerBase.

    參數

    void setStats (osg::Stats *stats)

    說明:設定狀態事件,包含一些事件的響應,狀態這裡要注意與StateSet的區別,這裡是指響應的狀態。以及渲染時的一些狀態設定。

    參數

    osg::Stats * getStats () const osg::Stats * getStats () const

    說明:為得到已經設定的狀態類,傳回值即為狀態類指標。

    virtual bool readConfiguration (const std::string &filename)=0 virtual bool isRealized () const =0 virtual void realize ()=0

    說明:以上三個為純虛函數,會在子類中實現,這是C++的機制決定的,具體些會在osgViewer::Viewer類以及osgViewer::CompositViewer子類中加以實現。

    virtual void setThreadingModel (ThreadingModel threadingModel)

    說明:設定線程模式。

    參數

    ThreadingModel getThreadingModel () const

    說明:得到線程模式,傳回值為當前的線程模式。

    virtual ThreadingModel suggestBestThreadingModel ()

    說明:根據當前情境的特點,得到一個最好的建議線程模式。傳回值為該線程模式。

    virtual void setUpThreading () 說明:為每個線程建立相對應的線程模式。

    bool areThreadsRunning () const 說明:線程是否全部運行。如果全部運行則返回真,否則返回假。

    virtual void stopThreading ()

    說明:停止線程運行。

    virtual void startThreading ()

    說明:開始線程運行。

    void setEndBarrierPosition (BarrierPosition bp)

    說明:選擇結束時是在交換Buffer之前還是在交換Buffer之後。

     參數

    BarrierPosition getEndBarrierPosition () const

    說明:得到最後結束時的位置,一般為個人設定的值。傳回值為位置值,為BeforeSwapBuffers 或者 AfterSwapBuffers。 void setDone (bool done) 說明:設定是否渲染完畢。如果設定為true則程式會結束。

    參數

    bool done () const

    說明:返回當前渲染狀態,如果沒有退出則返回真。

    void setEventVisitor (osgGA::EventVisitor *eventVisitor)

    說明:設定事件遍曆器。事件遍曆器可以訪問事件。

    參數

    osgGA::EventVisitor * getEventVisitor () const

    說明:得到事件訪問器。傳回值為事件訪問器。

    void setKeyEventSetsDone (int key)

    說明:設定一個鍵,點擊該鍵時會setDone(true),這也就是說程式會退出。注意:設定後,再按ESC鍵程式不會像以前一樣退出。

   參數

    int getKeyEventSetsDone () const

    說明:得到已經設定的按下就會退出的熱鍵。預設是ESC鍵。傳回值為該鍵的編譯,比如空格為0x20.

    void setQuitEventSetsDone (bool flag)

    說明:當設定為真時,當程式收到QUIT_APPLICATION訊息時會退出。否則會忽略。

     參數

    bool getQuitEventSetsDone () const

    說明:是否設定了程式退出標識。

    void setUpdateVisitor (osgUtil::UpdateVisitor *updateVisitor)

    說明:設定更新訪問器。訪問器[visitor]是個很重要的概念。

    參數

    osgUtil::UpdateVisitor * getUpdateVisitor () const

    說明:得到更新訪問器。傳回值為指向其的指標。

    void setUpdateOperations (osg::OperationQueue *operations)

    說明:設定一個操作序列。

    參數

    osg::OperationQueue * getUpdateOperations () const

    說明:得到一個操作序列,傳回值為指向該操作序列的指標。

    void addUpdateOperation (osg::Operation *operation)

    說明:添加一個更新操作。

    參數

    void removeUpdateOperation (osg::Operation *operation)

    說明:移除一個更新操作。

    參數

    void setRealizeOperation (osg::Operation *op)

    說明:設定一個實現操作。

    參數

    osg::Operation * getRealizeOperation ()

    說明:得到一個實現操作。傳回值為該操作的指標。

    void checkWindowStatus ()

    說明:檢查視窗狀態,是一系列的內部檢查操作。比如查看視窗的尺寸是否為0,若為0退出等等。

    virtual void frame (double simulationTime=USE_REFERENCE_TIME) 說明:繪製幀。

    參數

    virtual int run ()=0 virtual

    void advance (double simulationTime=USE_REFERENCE_TIME)=0

    virtual void eventTraversal ()=0

    virtual void updateTraversal ()=0

    virtual void renderingTraversals ()

    virtual void getCameras (Cameras &cameras, bool onlyActive=true)=0

    virtual void getContexts (Contexts &contexts, bool onlyValid=true)=0
   
    virtual void getWindows (Windows &windows, bool onlyValid=true)=0

    virtual void getAllThreads (Threads &threads, bool onlyActive=true)=0

    virtual void getOperationThreads (OperationThreads &threads, bool onlyActive=true)=0

    virtual void getScenes (Scenes &scenes, bool onlyValid=true)=0

    virtual void getViews (Views &views, bool onlyValid=true)=0
   
    virtual double elapsedTime ()=0 virtual osg::FrameStamp * getViewerFrameStamp ()=0

    virtual void getUsage (osg::ApplicationUsage &usage) const =0

    說明:以上為虛函數,在子類中會有實現,具體一些為osgViewer::Viewer和osgViewer::CompositeViewer類。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.