OSG教程:場景保存類Viewer

第三維度
    作者:FreeSouth[楊石興]編著

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

osgViewer::Viewer

    類描述: 爲一個單獨的場景[scene]保存一個單獨的view.

    類中方法:

    1:Viewer() 
    2:Viewer (osg::ArgumentParser &arguments)
    3:Viewer (const osgViewer::Viewer &viewer, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)

    說明:是Viewer的構造函數。其中第一個爲常見的構造函數。第二個構造函數爲從類osg::ArgumentParser中傳遞參數入Viewer,類ArgumentParser可以獲取main入口參數以及程序的其它信息,也可以判斷傳參是否有誤。第三個重載的構造函數爲從另一個Viewer創建新Viewer,裏面的第一個參數表示源Viewer,而第二個參數表示使用的拷貝類型,參數主要有兩個,一個是淺拷貝:SHALLOW_COPY,另一個則是深拷貝:DEEP_COPY_OBJECTS,關於拷貝類型的不同和利弊可以參照一般C++書籍。關於OSG中的拷貝類型可以參照類osg::CopyOp。

    參數

OSG教程:場景保存類Viewer

    類繼承圖表:

OSG教程:場景保存類Viewer

    virtual ~Viewer ()

    說明: 析構函數

    META_Object (osgViewer, Viewer)

    說明:是一個宏,宏中定義了標準Clone,且具有isSameAs,ClassName,accept三個重要方法。目的是讓從Node派生的子類方便的定義所需要的純虛方法。

    參數

META_Object (osgViewer, Viewer)

    virtual void take (View &rhs)

    說明:功能是從一個View中得到它的所有設置,這其中包括相機和子相機以及子視口等等,得到後View會被銷燬。

    參數

virtual void take (View &rhs)

    virtual bool readConfiguration (const std::string &filename)

    說明:該方法是從類osgViewer::ViewerBase中繼承下來的方法,功能是讀取一個配置文件來配置Viewer.現實中並不是常用讀配置文件的方法來設置Viewer.如果讀取成功,則返回True,返則返回假。

    參數

virtual bool readConfiguration (const std::string &filename)

    virtual bool isRealized () const

    說明:該方法是從類osgViewer::ViewerBase中繼承下來的方法,功能是看Viewer是否已經執行了Realize操作,如果執行了則返回真,事則返回假。

    virtual void realize ()

    說明:該方法是從類osgViewer::ViewerBase中繼承下來的方法,功能是該操作會使對Viewer之前的設置都使之生效。

    virtual void setStartTick (osg::Timer_t tick)

    說明:該方法是從類osgViewer::View中繼承下來的方法,功能是設置時鐘開始滴答點數,從那裏開始計時。可以用於計算程序運行的時間等等。

    參數

virtual void setStartTick (osg::Timer_t tick)

    void setReferenceTime (double time=0.0)

    說明:設置參考時間,與上一個函數配合來使用。

    virtual void setSceneData (osg::Node *node)

    說明:設置場景中的數據,爲場景中渲染的實際數據,在事面會講解osg::Node類型。

    參數

OSG教程:場景保存類Viewer

    virtual GraphicsWindowEmbedded * setUpViewerAsEmbeddedInWindow (int x, int y, int width, int height)

    說明:該函數的功能是以嵌入式窗口的形式來設置該Viewer的渲染面。返回指向嵌入式界面指針。

    參數

OSG教程:場景保存類Viewer

    virtual double elapsedTime ()

    說明:該函數可以計算程序執行的時間,返回值爲程序執行的時間,一般爲毫秒級。

     virtual osg::FrameStamp * getViewerFrameStamp ()

    說明:這個函數返回當前Viewer的一個FrameStamp,至於什麼是FrameStamp,大意是說規定兩個時間,在此時間中規定幀的數目,在渲染時會按照這個幀數來把幀壓在這個時間段當中。

     virtual int run () 說明:開始執行渲染操作,返回值一般爲1。程序退出或出錯時會返回0。

    virtual void advance (double simulationTime=USE_REFERENCE_TIME)

    說明:高級,表示從默認參考時間開始會計算一些信息,幀速,幀率,幀間隔等等。

     參數

virtual void advance (double simulationTime=USE_REFERENCE_TIME)

    virtual void eventTraversal ()

    說明:事件遍歷,遍歷外部事件來處理場景中因事件發生而引起的渲染變化。

    virtual void updateTraversal ()

    說明:更新遍歷,遍歷更新場景的數據渲染。

    void setCameraWithFocus (osg::Camera *camera)

    說明:設置相機。

    參數

OSG教程:場景保存類Viewer

    osg::Camera * getCameraWithFocus () const osg::Camera * getCameraWithFocus () const

    說明:得到相機,返回值爲一個相機。

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

    說明:得到相機羣。參數一爲引用類型,執行該函數後cameras就含有了Viewer的相機羣。關於引用參數可以參考C++基本書籍。第二個參數問是否獲得激活可用的相機羣,而不可用的不獲得,默認值爲真。

    參數

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

    virtual void getContexts (Contexts &contexts, bool onlyValid=true)

    說明:得到上下文,參數一爲引用類型,執行該函數後contexts中就含有了Viewer的上下文,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得激活可用的上下文,而不可用的不獲得,默認值爲真。

    參數

OSG教程:場景保存類Viewer

    virtual void getWindows (Windows &windows, bool onlyValid=true)

    說明:得到Windows,這裏的Windows並不能直接理解爲所謂的窗口,應該理解爲一個渲染面。執行該函數後windows中就含有了Viewer中的windows,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得激活可用的窗口,而不可用的不獲得,默認值爲真。

    參數

virtual void getWindows (Windows &windows, bool onlyValid=true)

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

    說明:得到所有當前Viewer中的線程,執行該函數後threads中會有該Viewer的線程,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得正在激活的線程,而不激活的線程不獲得,默認值爲真。

    參數

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

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

    說明:得到操作線程[OperationThreads],執行該函數後threads中會有該Viewer的操作線程,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得正在激活的操作線程,而不激活的線程不獲得,默認值爲真。

    參數

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

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

    說明:得到當前Viewer的Scenes, 執行該函數後scnes中會有該Viewer的scenes,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得可用的scenes,而不可用的scenes不獲得,默認值爲真。

    參數

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

    virtual void getViews (Views &views, bool onlyValid=true)

    說明:得到當前Viewer的View,執行該函數後views中會有該Viewer的views,關於引用參數可以參考C++基本書籍。第二個參數問是否獲得可用的views,而不可用的不獲得,默認值爲真。

    參數

virtual void getViews (Views &views, bool onlyValid=true)

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

    說明:得到當前Viewer的命令行描述。

    參數

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

發佈了19 篇原創文章 · 獲贊 60 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章