選自《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類。