OpenSceneGraph程序设计 www.osgChina .org 第二章:OsG基础 说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是该操作会使对Viewer之前的设置都 使之生效。 virtual void setStartTick(osg::Timer_t tick) 说明:该方法是从类osgViewer:View中继承下来的方法,功能是设置时钟开始滴答点数,从那里开始计时。 可以用于计算程序运行的时间等等。 参数 名称 类型 描述 tick osg::Timer_t 代表时间,单位是毫秒,osg:Timer_t其实是unsigned long long void setReferenceTime(double time=0.0) 说明:设置参考时间,与上一个函数配合来使用。 virtual void setSceneData (osg::Node *node) 说明:设置场景中的数据,为场景中渲染的实际数据,在事面会讲解osg:Node类型。 参数 名称 类型 描述 Node Osg::Node* 场景中的数据结点 virtual GraphicsWindowEmbedded setUpViewerAsEmbeddedInWindow(int x,int y,int width,int height) 说明:该函数的功能是以嵌入式窗口的形式来设置该Viewer的渲染面。返回指向嵌入式界面指针。 参数 名称 类型 描述 Node Osg::Node* 场景中的数据结点 virtual double elapsedTime() 说明:该函数可以计算程序执行的时间,返回值为程序执行的时间,一般为毫秒级。 virtual osg:FrameStamp getViewerFrameStamp ( 说明:这个函数返回当前Viewer的一个FrameStamp,至于什么是FrameStamp,.大意是说规定两个时间,在 此时间中规定帧的数目,在渲染时会按照这个帧数来把帧压在这个时间段当中。 virtual int run ( 说明:开始执行渲染操作,返回值一般为1。程序退出或出错时会返回0。 virtual void advance(double simulationTime=USE REFERENCE TIME) 说明:高级,表示从默认参考时间开始会计算一些信息,帧速,帧率,帧间隔等等。 参数 名称 类型 描述 simulationTime double 开始执行时间,一般默认为参考时间 virtual void eventTraversal() 38
OpenSceneGraph 程序设计 www.osgChina.org 第二章:OSG 基础 38 说明:该方法是从类 osgViewer::ViewerBase 中继承下来的方法,功能是该操作会使对 Viewer 之前的设置都 使之生效。 virtual void setStartTick (osg::Timer_t tick) 说明:该方法是从类 osgViewer::View 中继承下来的方法,功能是设置时钟开始滴答点数,从那里开始计时。 可以用于计算程序运行的时间等等。 参数 名称 类型 描述 tick osg::Timer_t 代表时间,单位是毫秒,osg::Timer_t 其实是 unsigned long long void setReferenceTime (double time=0.0) 说明:设置参考时间,与上一个函数配合来使用。 virtual void setSceneData (osg::Node *node) 说明:设置场景中的数据,为场景中渲染的实际数据,在事面会讲解 osg::Node 类型。 参数 名称 类型 描述 Node Osg::Node* 场景中的数据结点 virtual GraphicsWindowEmbedded * setUpViewerAsEmbeddedInWindow (int x, int y, int width, int height) 说明:该函数的功能是以嵌入式窗口的形式来设置该 Viewer 的渲染面。返回指向嵌入式界面指针。 参数 名称 类型 描述 Node Osg::Node* 场景中的数据结点 virtual double elapsedTime () 说明:该函数可以计算程序执行的时间,返回值为程序执行的时间,一般为毫秒级。 virtual osg::FrameStamp * getViewerFrameStamp () 说明:这个函数返回当前 Viewer 的一个 FrameStamp,至于什么是 FrameStamp,大意是说规定两个时间,在 此时间中规定帧的数目,在渲染时会按照这个帧数来把帧压在这个时间段当中。 virtual int run () 说明:开始执行渲染操作,返回值一般为 1。程序退出或出错时会返回 0。 virtual void advance (double simulationTime=USE_REFERENCE_TIME) 说明:高级,表示从默认参考时间开始会计算一些信息,帧速,帧率,帧间隔等等。 参数 名称 类型 描述 simulationTime double 开始执行时间,一般默认为参考时间 virtual void eventTraversal ()
OpenScene Graph程序设计 www.osgChina .org 第二章:OsG基础 说明:事件遍历,遍历外部事件来处理场景中因事件发生而引起的渲染变化。 virtual void updateTraversal ( 说明:更新遍历,遍历更新场景的数据渲染。 void setCameraWithFocus (osg:Camera *camera) 说明:设置相机。 参数 名称 类型 描述 camera osg::Camera 为传给Viewer的相机。 osg::Camera getCameraWithFocus ( const osg:Camera getCameraWithFocus()const 说明:得到相机,返回值为一个相机。 virtual void getCameras(Cameras &cameras,bool onlyActive=true) 说明:得到相机群。参数一为引用类型,执行该函数后cameras就含有了Viewer的相机群。关于引用参数 可以参考C+基本书籍。第二个参数问是否获得激活可用的相机群,而不可用的不获得,默认值为真。 参数 名称 类型 描述 cameras Cameras 为接受Viewer相机群的参数,执行后内有Viewer的相机群。 onlyActive Bool 是否得到只激活的相机,默认为True. virtual void getContexts(Contexts &contexts,bool onlyValid=true) 说明:得到上下文,参数一为引用类型,执行该函数后contexts中就含有了Viewer的上下文,关于引用参 数可以参考C+基本书籍。第二个参数问是否获得激活可用的上下文,而不可用的不获得,默认值为真。 参数 名称 类型 描述 contexts Contexts 为接受Viewer上下文的参数,执行后内有Viewer的上下文。 onlyValid Bool 是否得到只可用的上下文,默认为True virtual void getWindows(Windows &windows,bool onlyValid=true) 说明:得到Windows,这里的Windows并不能直接理解为所谓的窗口,应该理解为一个渲染面。执行该函数 后windows中就含有了Viewer中的windows,.关于引用参数可以参考C+基本书籍。第二个参数问是否获 得激活可用的窗口,而不可用的不获得,默认值为真。 参数 名称 类型 描述 windows Windows 为接受Viewer中windows的参数,执行后内有Viewer的windows onlyValid Bool 是否得到只可用的windows,.默认为True. virtual void getAllThreads(Threads &threads,bool onlyActive=true) 说明:得到所有当前Viewer中的线程,执行该函数后threads中会有该Viewer的线程,关于引用参数可以 参考C+基本书籍。第二个参数问是否获得正在激活的线程,而不激活的线程不获得,默认值为真。 参数 39
OpenSceneGraph 程序设计 www.osgChina.org 第二章:OSG 基础 39 说明:事件遍历,遍历外部事件来处理场景中因事件发生而引起的渲染变化。 virtual void updateTraversal () 说明:更新遍历,遍历更新场景的数据渲染。 void setCameraWithFocus (osg::Camera *camera) 说明:设置相机。 参数 名称 类型 描述 camera osg::Camera * 为传给 Viewer 的相机。 osg::Camera * getCameraWithFocus () const osg::Camera * getCameraWithFocus () const 说明:得到相机,返回值为一个相机。 virtual void getCameras (Cameras &cameras, bool onlyActive=true) 说明:得到相机群。参数一为引用类型,执行该函数后 cameras 就含有了 Viewer 的相机群。关于引用参数 可以参考 C++基本书籍。第二个参数问是否获得激活可用的相机群,而不可用的不获得,默认值为真。 参数 名称 类型 描述 cameras Cameras & 为接受 Viewer 相机群的参数,执行后内有 Viewer 的相机群。 onlyActive Bool 是否得到只激活的相机,默认为 True. virtual void getContexts (Contexts &contexts, bool onlyValid=true) 说明:得到上下文,参数一为引用类型,执行该函数后 contexts 中就含有了 Viewer 的上下文,关于引用参 数可以参考 C++基本书籍。第二个参数问是否获得激活可用的上下文,而不可用的不获得,默认值为真。 参数 名称 类型 描述 contexts Contexts & 为接受 Viewer 上下文的参数,执行后内有 Viewer 的上下文。 onlyValid Bool 是否得到只可用的上下文,默认为 True. virtual void getWindows (Windows &windows, bool onlyValid=true) 说明:得到 Windows,这里的 Windows 并不能直接理解为所谓的窗口,应该理解为一个渲染面。执行该函数 后 windows 中就含有了 Viewer 中的 windows,关于引用参数可以参考 C++基本书籍。第二个参数问是否获 得激活可用的窗口,而不可用的不获得,默认值为真。 参数 名称 类型 描述 windows Windows & 为接受 Viewer 中 windows 的参数,执行后内有 Viewer 的 windows onlyValid Bool 是否得到只可用的 windows,默认为 True. virtual void getAllThreads (Threads &threads, bool onlyActive=true) 说明:得到所有当前 Viewer 中的线程,执行该函数后 threads 中会有该 Viewer 的线程,关于引用参数可以 参考 C++基本书籍。第二个参数问是否获得正在激活的线程,而不激活的线程不获得,默认值为真。 参数
OpenSceneGraph程序设计 www.osgChina .org 第二章:OsG基础 名称 类型 描述 threads Threads& 为接受Viewer中的线程,执行后内有Viewer的线程。 onlyActive Bool 是否得到只可用的线程,默认为True virtual void getOperationThreads(OperationThreads &threads,bool onlyActive=true) 说明:得到操作线程[OperationThreads],.执行该函数后threads中会有该Viewer的操作线程,关于引用参数 可以参考C+基本书籍。第二个参数问是否获得正在激活的操作线程,而不激活的线程不获得,默认值为真。 参数 名称 类型 描述 threads OperationThreads 为接受Viewer中的操作线程,执行后内有Viewer的操作线程。 onlyActive Bool 是否得到只可用的操作线程,默认为True. virtual void getScenes(Scenes &scenes,bool onlyValid=true) 说明:得到当前Viewer的Scenes,,执行该函数后scnes中会有该Viewer的scenes,关于引用参数可以参考C+ 基本书籍。第二个参数问是否获得可用的scenes,而不可用的scenes不获得,默认值为真。 参数 名称 类型 描述 Scenes Scenes& 为接受Viewer的Scenes,,执行后内有Viewer的Scenes onlyValid Bool 是否得到只可用的Scenes,默认为True. virtual void getViews(Views &views,bool onlyValid=true) 说明:得到当前Viewer的View,执行该函数后views中会有该Viewer的views,关于引用参数可以参考C+ 基本书籍。第二个参数问是否获得可用的views,而不可用的不获得,默认值为真。 参数 名称 类型 描述 Views Views& 为接受Viewer的views,执行后内有Viewer的Views onlyValid Bool 是否得到只可用的Views,默认为True. virtual void getUsage(osg::ApplicationUsage &usage)const 说明:得到当前Viewer的命令行描述。 参数 名称 类型 描述 usage osg:ApplicationUsage 对Viewer的命令行功能进行的规范与检查,示例可见osgViewer 程序的示例四。 2.4.2 osgViewer:ViewerBase 类描述:是view的基本类,同时也是osgViewer:CompositeViewer和osgViewer:Viewer的父类。 类继承图:由于是osgViewer::Viewer的父类,所以它的方法一般都会提供给osgVIewer:Viewer使用,而且 非常重要。 0
OpenSceneGraph 程序设计 www.osgChina.org 第二章:OSG 基础 40 名称 类型 描述 threads Threads & 为接受 Viewer 中的线程,执行后内有 Viewer 的线程。 onlyActive Bool 是否得到只可用的线程,默认为 True. virtual void getOperationThreads (OperationThreads &threads, bool onlyActive=true) 说明:得到操作线程[OperationThreads],执行该函数后 threads 中会有该 Viewer 的操作线程,关于引用参数 可以参考 C++基本书籍。第二个参数问是否获得正在激活的操作线程,而不激活的线程不获得,默认值为真。 参数 名称 类型 描述 threads OperationThreads & 为接受 Viewer 中的操作线程,执行后内有 Viewer 的操作线程。 onlyActive Bool 是否得到只可用的操作线程,默认为 True. virtual void getScenes (Scenes &scenes, bool onlyValid=true) 说明:得到当前 Viewer 的 Scenes, 执行该函数后 scnes 中会有该 Viewer 的 scenes,关于引用参数可以参考 C++ 基本书籍。第二个参数问是否获得可用的 scenes,而不可用的 scenes 不获得,默认值为真。 参数 名称 类型 描述 Scenes Scenes& 为接受 Viewer 的 Scenes,执行后内有 Viewer 的 Scenes onlyValid Bool 是否得到只可用的 Scenes,默认为 True. virtual void getViews (Views &views, bool onlyValid=true) 说明:得到当前 Viewer 的 View,执行该函数后 views 中会有该 Viewer 的 views,关于引用参数可以参考 C++ 基本书籍。第二个参数问是否获得可用的 views,而不可用的不获得,默认值为真。 参数 名称 类型 描述 Views Views& 为接受 Viewer 的 views,执行后内有 Viewer 的 Views onlyValid Bool 是否得到只可用的 Views,默认为 True. virtual void getUsage (osg::ApplicationUsage &usage) const 说明:得到当前 Viewer 的命令行描述。 参数 名称 类型 描述 usage osg::ApplicationUsage & 对 Viewer 的命令行功能进行的规范与检查,示例可见 osgViewer 程序的示例四。 2.4.2 osgViewer::ViewerBase 类描述:是 view 的基本类,同时也是 osgViewer::CompositeViewer 和 osgViewer::Viewer 的父类。 类继承图:由于是 osgViewer::Viewer 的父类,所以它的方法一般都会提供给 osgVIewer::Viewer 使用,而且 非常重要
OpenSceneGraph程序设计 www.osgChina.org 第二章:OsG基础 osg:Referenced osg::Object osgViewer::ViewerBase osgViewer::CompositeViewer osgViewer:Viewer 类中方法: ViewerBase ( ViewerBase(const ViewerBase &vb) 说明:构造函数。 第二个构造函数为从一个己知的ViewerBase中创建新ViewerBase. 参数 名称 类型 描述 b const ViewerBase 己知的源ViewerBase,用来创建新的ViewerBase void setStats(osg:Stats *stats) 说明:设置状态事件,包含一些事件的响应,状态这里要注意与StateSet的区别,这里是指响应的状态。以 及渲染时的一些状态设置。 参数 名称 类型 描述 stats osg::Stats 为需要设置的状态。 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 ThreadingModel 需要设置的线程模式,其值可为以下值:SingleThreaded CullDrawThreadPerContext ThreadPerContext DrawThreadPerContext CullThreadPerCameraDrawThreadPerContext ThreadPerCamera AutomaticSelection 41
OpenSceneGraph 程序设计 www.osgChina.org 第二章:OSG 基础 41 类中方法: ViewerBase () ViewerBase (const ViewerBase &vb) 说明:构造函数。第二个构造函数为从一个已知的 ViewerBase 中创建新 ViewerBase. 参数 名称 类型 描述 vb const ViewerBase & 已知的源 ViewerBase,用来创建新的 ViewerBase void setStats (osg::Stats *stats) 说明:设置状态事件,包含一些事件的响应,状态这里要注意与 StateSet 的区别,这里是指响应的状态。以 及渲染时的一些状态设置。 参数 名称 类型 描述 stats osg::Stats * 为需要设置的状态。 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 ThreadingModel 需要设置的线程模式,其值可为以下值:SingleThreaded CullDrawThreadPerContext ThreadPerContext DrawThreadPerContext CullThreadPerCameraDrawThreadPerContext ThreadPerCamera AutomaticSelection
OpenSceneGraph程序设计 www.osgChina .org 第二章:OsG基础 ThreadingModel getThreadingModel()const 说明:得到线程模式,返回值为当前的线程模式。 virtual ThreadingModel suggestBestThreadingModel() 说明:根据当前场景的特点,得到一个最好的建议线程模式。返回值为该线程模式。 virtual void setUpThreading ( 说明:为每个线程建立相对应的线程模式。 bool areThreadsRunning (const 说明:线程是否全部运行。如果全部运行则返回真,否则返回假。 virtual void stopThreading() 说明:停止线程运行。 virtual void startThreading ( 说明:开始线程运行。 void setEndBarrierPosition(BarrierPosition bp) 说明:选择结束时是在交换Buffer之前还是在交换Buffer之后。 参数 名称 类型 描述 bp BarrierPosition 选择结束时的位置,其值可以为以下两个值:BeforeSwapBuffers AfterSwapBuffers BarrierPosition getEndBarrierPosition const 说明:得到最后结束时的位置,一般为个人设置的值。返回值为位置值,为BeforeSwapBuffers或者 AfterSwapBuffers。 void setDone(bool done) 说明:设置是否渲染完毕。如果设置为true则程序会结束。 参数 名称 类型 描述 done bool 如果设置为true程序会结束。 bool done (const 说明:返回当前渲染状态,如果没有退出则返回真。 void setEventVisitor(osgGA::EventVisitor *eventVisitor) 说明:设置事件遍历器。事件遍历器可以访问事件。 参数 名称 类型 描述 eventVisitor osgGA::EventVisitor 为传递过去访问事件的访问器。 42
OpenSceneGraph 程序设计 www.osgChina.org 第二章:OSG 基础 42 ThreadingModel getThreadingModel () const 说明:得到线程模式,返回值为当前的线程模式。 virtual ThreadingModel suggestBestThreadingModel () 说明:根据当前场景的特点,得到一个最好的建议线程模式。返回值为该线程模式。 virtual void setUpThreading () 说明:为每个线程建立相对应的线程模式。 bool areThreadsRunning () const 说明:线程是否全部运行。如果全部运行则返回真,否则返回假。 virtual void stopThreading () 说明:停止线程运行。 virtual void startThreading () 说明:开始线程运行。 void setEndBarrierPosition (BarrierPosition bp) 说明:选择结束时是在交换 Buffer 之前还是在交换 Buffer 之后。 参数 名称 类型 描述 bp BarrierPosition 选择结束时的位置,其值可以为以下两个值:BeforeSwapBuffers AfterSwapBuffers BarrierPosition getEndBarrierPosition () const 说明:得到最后结束时的位置,一般为个人设置的值。返回值为位置值,为 BeforeSwapBuffers 或者 AfterSwapBuffers。 void setDone (bool done) 说明:设置是否渲染完毕。如果设置为 true 则程序会结束。 参数 名称 类型 描述 done bool 如果设置为 true 程序会结束。 bool done () const 说明:返回当前渲染状态,如果没有退出则返回真。 void setEventVisitor (osgGA::EventVisitor *eventVisitor) 说明:设置事件遍历器。事件遍历器可以访问事件。 参数 名称 类型 描述 eventVisitor osgGA::EventVisitor * 为传递过去访问事件的访问器