1、osgViewer::Viewer,osgViewer::ViewerBase,osgGA::KeySwitchMatrixManipulator,osg::ArgumentParser的说明
2015-12-07 23:29
856 查看
一、osgViewer::Viewer类
1、virtual void take (View &rhs)
说明:功能是从一个View中得到它的所有设置,这其中包括相机和子相机以及子视口等等,得到后View会被销毁。
2、virtual bool readConfiguration (const std::string &filename)
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是读取一个配置文件来配置Viewer.现实中并不是常用读配置文件的方法来设置Viewer.如果读取成功,则返回True,返则返回false,参数filename表示该配置文件的名称,可以带路径名。
3、virtual bool isRealized () const
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是看Viewer是否已经执行了Realize操作,如果执行了则返回真,事则返回假。
4、virtual void realize ()
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是该操作会使对Viewer之前的设置都使之生效。
5、virtual void setStartTick (osg::Timer_t tick)
说明:该方法是从类osgViewer::View中的方法,功能是设置时钟开始滴答点数,从那里开始计时。可以用于计算程序运行的时间等等,参数tick代表时间,单位是毫秒,osg::Timer_t其实是unsigned long long类型
6、void setReferenceTime (double time=0.0)
说明:设置参考时间,与上一个函数配合来使用。
7、virtual void setSceneData (osg::Node *node)
说明:设置场景中的数据,为场景中渲染的实际数据。
8、virtual GraphicsWindowEmbedded * setUpViewerAsEmbeddedInWindow (int x, int y, int width, int height)
说明:该函数的功能是以嵌入式窗口的形式来设置该Viewer的渲染面。返回指向嵌入式界面指针,其中x,y是坐标,widht和height是窗口的宽度和高度。
9、virtual double elapsedTime ()
说明:该函数可以计算程序执行的时间,返回值为程序执行的时间,一般为毫秒级。
10、virtual osg::FrameStamp * getViewerFrameStamp ()
说明:这个函数返回当前Viewer的一个FrameStamp,至于什么是FrameStamp,大意是说规定两个时间,在此时间中规定帧的数目,在渲染时会按照这个帧数来把帧压在这个时间段当中。
11、virtual int run ()
说明:开始执行渲染操作,返回值一般为1。程序退出或出错时会返回0。
12、virtual void advance (double simulationTime=USE_REFERENCE_TIME)
说明:高级,表示从默认参考时间开始会计算一些信息,帧速,帧率,帧间隔等等。simulationTime表示开始执行时间,一般默认为参考时间
13、virtual void eventTraversal ()
说明:事件遍历,遍历外部事件来处理场景中因事件发生而引起的渲染变化。
14、virtual void updateTraversal ()
说明:更新遍历,遍历更新场景的数据渲染。
15、void setCameraWithFocus (osg::Camera *camera)
说明:设置相机。
16、osg::Camera * getCameraWithFocus ()
const osg::Camera * getCameraWithFocus () const
说明:得到相机,返回值为一个相机。
17、virtual void getCameras (Cameras &cameras, bool onlyActive=true)
说明:得到相机群。参数一为引用类型,执行该函数后cameras就含有了Viewer的相机群。第二个参数是否获得激活可用的相机群,false表示不获得,true表示获得,默认值为true。
18、virtual void getContexts (Contexts &contexts, bool onlyValid=true)
说明:得到上下文,参数一为引用类型,执行该函数后contexts中就含有了Viewer的上下文。第二个参数表示是否获得激活可用的上下文,false表示不获得,true表示获得,默认值为true。
19、virtual void getWindows (Windows &windows, bool onlyValid=true)
说明:得到Windows,这里的Windows并不能直接理解为所谓的窗口,应该理解为一个渲染面。执行该函数后windows中就含有了Viewer中的windows,第二个参数表示是否获得激活可用的窗口,false表示不获得,true表示获得,默认值为true。
20、virtual void getAllThreads (Threads &threads, bool onlyActive=true)
说明:得到所有当前Viewer中的线程,执行该函数后threads中会有该Viewer的线程,第二个参数表示是否获得正在激活的线程,false表示不获得,true表示获得,默认值为true。
21、virtual void getOperationThreads (OperationThreads &threads, bool onlyActive=true)
说明:得到操作线程[OperationThreads],执行该函数后threads中会有该Viewer的操作线程,第二个参数表示是否获得正在激活的操作线程,false表示不获得,true表示获得,默认值为true。
22、virtual void getScenes (Scenes &scenes, bool onlyValid=true)
说明:得到当前Viewer的Scenes, 执行该函数后scnes中会有该Viewer的scenes。第二个参数表示是否获得可用的scenes,false表示不获得,默认值为真。
23、virtual void getViews (Views &views, bool onlyValid=true)
说明:得到当前Viewer的View,执行该函数后views中会有该Viewer的views。第二个参数表示是否获得可用的views,false表示不获得,默认值为真。
24、virtual void getUsage (osg::ApplicationUsage &usage) const
说明:得到当前Viewer的命令行描述。
二、osgViewer::ViewerBase类
类描述:是view的基本类,同时也是osgViewer::CompositeViewer和osgViewer::Viewer的父类,由于是osgViewer::Viewer的父类,所以它的方法一般都会提供给osgVIewer::Viewer使用,而且非常重要。
说明:构造函数。第二个构造函数为从一个已知的ViewerBase中创建新ViewerBase.,vb为已知的源ViewerBase,用来创建新的ViewerBase
1、void setStats (osg::Stats *stats)
说明:设置状态事件,包含一些事件的响应,状态这里要注意与StateSet的区别,这里是指响应的状态。以及渲染时的一些状态设置。
2、osg::Stats * getStats ()
const osg::Stats * getStats () const
说明:为得到已经设置的状态类,返回值即为状态类指针。
3、virtual bool readConfiguration (const std::string &filename)=0
virtual bool isRealized () const =0
virtual void realize ()=0
说明:以上三个为纯虚函数,会在子类中实现,这是C++的机制决定的,具体些会在osgViewer::Viewer类以及osgViewer::CompositViewer子类中加以实现。
4、virtual void setThreadingModel (ThreadingModel threadingModel)
说明:设置线程模式。其中threadingModel的值可以为:SingleThreaded,CullDrawThreadPerContext,ThreadPerContext,DrawThreadPerContext,CullThreadPerCameraDrawThreadPerContext,ThreadPerCamera,AutomaticSelection
5、ThreadingModel getThreadingModel () const
说明:得到线程模式,返回值为当前的线程模式。
6、virtual ThreadingModel suggestBestThreadingModel ()
说明:根据当前场景的特点,得到一个最好的建议线程模式。返回值为该线程模式。
7、virtual void setUpThreading ()
说明:为每个线程建立相对应的线程模式。
8、bool areThreadsRunning () const
说明:线程是否全部运行。如果全部运行则返回真,否则返回假。
9、virtual void stopThreading ()
说明:停止线程运行。
10、virtual void startThreading ()
说明:开始线程运行。
11、void setEndBarrierPosition (BarrierPosition bp)
说明:选择结束时是在交换Buffer之前还是在交换Buffer之后,bp表示选择结束时的位置,其值可以为以下两个值:BeforeSwapBuffers,AfterSwapBuffers
12、BarrierPosition getEndBarrierPosition () const
说明:得到最后结束时的位置,一般为个人设置的值。返回值为位置值,为BeforeSwapBuffers 或者 AfterSwapBuffers。
13、void setDone (bool done)
说明:设置是否渲染完毕。如果设置为true则程序会结束。
14、bool done () const
说明:返回当前渲染状态,如果没有退出则返回真。
15、void setEventVisitor (osgGA::EventVisitor *eventVisitor)
说明:设置事件遍历器。事件遍历器可以访问事件,eventVisitor为传递过去访问事件的访问器。
16、osgGA::EventVisitor * getEventVisitor () const
说明:得到事件访问器。返回值为事件访问器。
17、void setKeyEventSetsDone (int key)
说明:设置一个键,点击该键时会setDone(true),这也就是说程序会退出。注意:设置后,再按ESC键程序不会像以前一样退出,key为该键的十进制的ASCII编码,比如32代表空格。
18、int getKeyEventSetsDone () const
说明:得到已经设置的按下就会退出的热键。默认是ESC键。返回值为该键的ASCII编码,比如空格为32.
19、void setQuitEventSetsDone (bool flag)
说明:当设置为真时,当程序收到QUIT_APPLICATION消息时会退出。否则会忽略。
20、bool getQuitEventSetsDone () const
说明:是否设置了程序退出标识。
21、void setUpdateVisitor (osgUtil::UpdateVisitor *updateVisitor)
说明:设置更新访问器。访问器[visitor]是个很重要的概念。
22、osgUtil::UpdateVisitor * getUpdateVisitor () const
说明:得到更新访问器。返回值为指向其的指针。
23、void setUpdateOperations (osg::OperationQueue *operations)
说明:设置一个操作序列。
24、osg::OperationQueue * getUpdateOperations () const
说明:得到一个操作序列,返回值为指向该操作序列的指针。
25、void addUpdateOperation (osg::Operation *operation)
说明:添加一个更新操作。
26、void removeUpdateOperation (osg::Operation *operation)
说明:移除一个更新操作。
27、void setRealizeOperation (osg::Operation *op)
说明:设置一个实现操作。
28、osg::Operation * getRealizeOperation ()
说明:得到一个实现操作。返回值为该操作的指针。
29、void checkWindowStatus ()
说明:检查窗口状态,是一系列的内部检查操作。比如查看窗口的尺寸是否为0,若为0退出等等。
30、virtual void frame (double simulationTime=USE_REFERENCE_TIME)
说明:绘制帧,simulationTime表示设置帧绘制时间,一般为参考时间,这个操作在一般情况下是没有意义的。
31、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类。
三、osgGA::KeySwitchMatrixManipulator
类描述:该类可以被看做一个管理器,管理一些被添加到它里面的操作器,用按键来切换这些操作器。比如‘1’会被切换到TrackBall‘2’会被切换到Driver等等。
1、virtual const char * className () const
说明:返回该类名称。
2、void addMatrixManipulator (int key, std::string name, MatrixManipulator *cm)
说明:添加一个操作器到keySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型。比如TrackBall.key表示选择热键,比如49代表数字1,name表示操作器名称,可以自己取个好听的名字,不要用中文,cm表示矩阵操作器指针,加入的就是这个操作器。
3、void addNumberedMatrixManipulator (MatrixManipulator *cm)
说明:添加一个操作器到KeySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型,比如TrackBall。他的热键是递增的,比上一个加入的热键加1,比如上次加入的热键是1那么这个就是2。
4、unsigned int getNumMatrixManipulators () const
说明:得到当前KeySwitchMatrixManipulator中的操作器个数。返回具体数目。
5、void selectMatrixManipulator (unsigned int num)
说明:选择一个操作器,num表示操作器的索引值,指第几个操作器。在加入时是按顺序的。
6、KeyManipMap & getKeyManipMap ()
const KeyManipMap & getKeyManipMap () const
说明:得到绑定到这个KeySwitchMatrixManipulator 中所有的操作器,包含键的映射。返回值是KeyManip其实是一个键-值对,前面为操作器对应的键,比如1,后面是对应的名,比如TrackBall
7、MatrixManipulator * getCurrentMatrixManipulator ()
const MatrixManipulator * getCurrentMatrixManipulator () const
说明:得到当前使用的操作器类,返回该类的指针。
8、MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index)
const MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index) const
说明:得到某一个索引对映的操作器,返回该操作器的指针,index表示操作器的索引值,比如1代表TrackBall.
9、MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key)
const MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key) const
说明:得到某一个热键对映的操作器,返回该操作器的指针。key表示操作器的热键,比如49代表数字键1.
10、virtual void setMinimumDistance (float minimumDistance)
说明:设置最小的距离。在靠近中心的时候视点会按比率伸缩以保持大于该最小矩,minimumDistance表示最小矩离的数字,一般是以米为单位。
11、virtual void setCoordinateFrameCallback (CoordinateFrameCallback *cb)
说明:当前绘制坐标系统的回调,该回调的作用是告诉操作者具体的方向,东西南北。
12、virtual void setByMatrix (const osg::Matrixd &matrix)
说明:用矩阵来设置当前视口。
13、virtual void setByInverseMatrix (const osg::Matrixd &matrix)
说明:用逆矩阵来设置当前视口。
14、virtual osg::Matrixd getMatrix () const
virtual osg::Matrixd getInverseMatrix () const
说明:得到当前视口的矩阵/逆矩阵。
15、virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode () const
说明:得到空间融合距模式。返回值为模式值,为下列值之一:USE_FUSION_DISTANCE_VALUE, PROPORTIONAL_TO_SCREEN_DISTANCE
16、virtual float getFusionDistanceValue () const
说明:得到空间融合距值。
17、virtual void setNode (osg::Node *n)
说明:绑定一个结点到KeySwitchMatrixManipulator,会自动的解除以前的结点。如果设置为NULL,则不绑定任何结点,n表示要帮定的结点的指针。设置为NULL表示解除一切绑定。
18、virtual const osg::Node * getNode () const
virtual osg::Node * getNode ()
说明:得到KeySwitchMatrixManipulator绑定的结点。
19、virtual void setHomePosition (const osg::Vec3d &eye, const osg::Vec3d ¢er, const osg::Vec3d &up, bool autoComputeHomePosition =false)
说明:设置视口原点,一般为按空格键后返回的点。使用欧拉坐标系固定。autoComputeHomePosition表示是否自动计算原点位置,这里默认为false,因为已经指定了视点原点位置。
20、virtual void setAutoComputeHomePosition (bool flag)
说明:说明是否自动计算视口原点位置,flag为真表示自动计算。计算结果一般是包围球的圆心。
21、virtual void computeHomePosition ()
说明:计算视口原点位置。
22、virtual void home (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual void init (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual bool handle (const GUIEventAdapter &ea, GUIActionAdapter &us)
virtual void getUsage (osg::ApplicationUsage &usage) const
说明:上述是响应事件的一些函数,在事件响应一节中会详加解释。
四、osg::ArgumentParser类
类描述:读取main函数参数以及外部参数的类,会自动识别外部参数正确与否,它是个单独的类不能存在继承关系。
1、ArgumentParser (int *argc, char **argv)
说明:构造函数,传入参数为main的两个参数。
2、void setApplicationUsage (ApplicationUsage *usage)
说明:设置应用程序类,该类中含有解析命令行,程序名称等等。
3、ApplicationUsage * getApplicationUsage ()
const ApplicationUsage * getApplicationUsage () const
说明:得到应用程序类。返回值为指向应用程序类的指针。
4、int & argc ()
char ** argv ()
说明:得到argc与argv参数。
5、char * operator[] (int pos)
const char * operator[] (int pos) const
说明:得到第pos个参数的命令串,pos表示第几个参数的索引值,比如1代表整个程序的绝对路径。
6、std::string getApplicationName () const
说明:得到应用程序的名称,返回该名称所对应的字串。
7、int find (const std::string &str) const
说明:得到命令行字符串所对应的索引值。返回该索引值,为整数。索引值意思为该行agrc值,str表示用来查询索引值的命令行字符串。
8、bool isOption (int pos) const
说明:判断该位置是否是操作。类似于-o –help –a 等等前面带单或者双划线的一般视为操作。该函数还可以判断是否为有效操作。如果是有效操作则返回真,如果是字符串不代表操作函义则返回假,pos表示需要判断的字符串的位置值,即argc值。
9、bool isString (int pos) const
说明:判断该位置是否是字符串。类似于glider.osg这样前面不带单双划线的又不是纯数字的被视为字符串。字符串一般会表示文件名。如果是字符串则返回真,否则返回假,pos表示需要判断的字符串的位置值,即argc值。
10、bool isNumber (int pos) const
说明:判断该位置是否是数字,类似于-t 10.0 11.0中两个字符串会被视为数字。如果是数字则返回真,否则返回假,pos表示需要判断的字符串的位置值,即argc值。
11、bool containsOptions () const
说明:看命令行中是否包含操作,如果包含操作则返回真,否则返回假。
12、void remove (int pos, int num=1)
说明:移除某一个位置的字符串。可移除多个字串,默认为1,pos表示需要移除的字符串的起始位置,即argc值,num表示需要移除的字符串的个数,默认值为1。
13、bool match (int pos, const std::string &str) const
说明:看pos位置的字串与str是否批配,如果批配则返回真,否则返回假,pos表示需要判断的字符串的起始位置,即argc值,str表示需要判断的目的串值。
14、bool read (const std::string &str)
bool read (const std::string &str, Parameter value1)
bool read (const std::string &str, Parameter value1, Parameter value2)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7, Parameter value8)
bool read (int pos, const std::string &str)
bool read (int pos, const std::string &str, Parameter value1)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7, Parameter value8)
说明:为实际的读命令行的操作以及其对应的参数。返回值表:如果有该操作串且参数值也满足就返回真,否则返回假。比如read(“-h”)如果有-h则返回真,否则返回假,pos表示需要读取的字符串的起始位置,即argc值,str表示需要读取的字符串的值,value表示带表读入的参数值,可以是整型,实型,布尔型等等。实际枚举值为:BOOL_PARAMETER,FLOAT_PARAMETER,DOUBLE_PARAMETER,INT_PARAMETER,UNSIGNED_INT_PARAMETER,STRING_PARAMETER
15、bool errors (ErrorSeverity severity=BENIGN) const
说明:检查命令行是否有错误,如果有错误则返回真。参数代表检查的级别,分两种,一种是小错,一种就致命错。小错代表不能识别的错误,致命错则可能是其它的任何错误,severity代表要检查的错误是小错还是致命错,以般有以下两个值: BENIGN,CRITICAL默认是小错
16、void reportError (const std::string &message, ErrorSeverity severity=CRITICAL)
说明:报告命令行错误。输出错误信息到message.默认是报告致命的错误级别。输出的错误信息到message.,报告错误的级别,默认是致命错误。可以是BEGIN,CRITICAL
17、void reportRemainingOptionsAsUnrecognized (ErrorSeverity severity=BENIGN)
说明:报告命令行中无法识别的字符串,相当于小错级别,默认为是小错级别,报告命令行中无法识别的字符串,默认是小错级别
18、ErrorMessageMap & getErrorMessageMap ()
const ErrorMessageMap & getErrorMessageMap () const
说明:得到一个错误的消息映射,该映射定义为,键为错误串名,值为错误级别。Error的实际定义是这样的:std::map<std::string,ErrorSeverity>
19、void writeErrorMessages (std::ostream &output, ErrorSeverity sevrity=BENIGN)
说明:输出命令行错误到output,默认输出小错误级别,output一般是std::cout
Viewer() Viewer (osg::ArgumentParser &arguments) Viewer (const osgViewer::Viewer &viewer, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)说明:这三个函数是osgViewer::Viewer的构造函数。其中第一个为常见的构造函数。第二个构造函数为从类osg::ArgumentParser中传递参数入Viewer,类ArgumentParser可以获取main入口参数以及程序的其它信息,也可以判断传参是否有误。第三个重载的构造函数为从另一个Viewer创建新Viewer,里面的第一个参数表示源Viewer,而第二个参数表示使用的拷贝类型,参数主要有两个,一个是浅拷贝:SHALLOW_COPY,另一个则是深拷贝:DEEP_COPY_OBJECTS,关于OSG中的拷贝类型可以参照类osg::CopyOp。
1、virtual void take (View &rhs)
说明:功能是从一个View中得到它的所有设置,这其中包括相机和子相机以及子视口等等,得到后View会被销毁。
2、virtual bool readConfiguration (const std::string &filename)
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是读取一个配置文件来配置Viewer.现实中并不是常用读配置文件的方法来设置Viewer.如果读取成功,则返回True,返则返回false,参数filename表示该配置文件的名称,可以带路径名。
3、virtual bool isRealized () const
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是看Viewer是否已经执行了Realize操作,如果执行了则返回真,事则返回假。
4、virtual void realize ()
说明:该方法是从类osgViewer::ViewerBase中继承下来的方法,功能是该操作会使对Viewer之前的设置都使之生效。
5、virtual void setStartTick (osg::Timer_t tick)
说明:该方法是从类osgViewer::View中的方法,功能是设置时钟开始滴答点数,从那里开始计时。可以用于计算程序运行的时间等等,参数tick代表时间,单位是毫秒,osg::Timer_t其实是unsigned long long类型
6、void setReferenceTime (double time=0.0)
说明:设置参考时间,与上一个函数配合来使用。
7、virtual void setSceneData (osg::Node *node)
说明:设置场景中的数据,为场景中渲染的实际数据。
8、virtual GraphicsWindowEmbedded * setUpViewerAsEmbeddedInWindow (int x, int y, int width, int height)
说明:该函数的功能是以嵌入式窗口的形式来设置该Viewer的渲染面。返回指向嵌入式界面指针,其中x,y是坐标,widht和height是窗口的宽度和高度。
9、virtual double elapsedTime ()
说明:该函数可以计算程序执行的时间,返回值为程序执行的时间,一般为毫秒级。
10、virtual osg::FrameStamp * getViewerFrameStamp ()
说明:这个函数返回当前Viewer的一个FrameStamp,至于什么是FrameStamp,大意是说规定两个时间,在此时间中规定帧的数目,在渲染时会按照这个帧数来把帧压在这个时间段当中。
11、virtual int run ()
说明:开始执行渲染操作,返回值一般为1。程序退出或出错时会返回0。
12、virtual void advance (double simulationTime=USE_REFERENCE_TIME)
说明:高级,表示从默认参考时间开始会计算一些信息,帧速,帧率,帧间隔等等。simulationTime表示开始执行时间,一般默认为参考时间
13、virtual void eventTraversal ()
说明:事件遍历,遍历外部事件来处理场景中因事件发生而引起的渲染变化。
14、virtual void updateTraversal ()
说明:更新遍历,遍历更新场景的数据渲染。
15、void setCameraWithFocus (osg::Camera *camera)
说明:设置相机。
16、osg::Camera * getCameraWithFocus ()
const osg::Camera * getCameraWithFocus () const
说明:得到相机,返回值为一个相机。
17、virtual void getCameras (Cameras &cameras, bool onlyActive=true)
说明:得到相机群。参数一为引用类型,执行该函数后cameras就含有了Viewer的相机群。第二个参数是否获得激活可用的相机群,false表示不获得,true表示获得,默认值为true。
18、virtual void getContexts (Contexts &contexts, bool onlyValid=true)
说明:得到上下文,参数一为引用类型,执行该函数后contexts中就含有了Viewer的上下文。第二个参数表示是否获得激活可用的上下文,false表示不获得,true表示获得,默认值为true。
19、virtual void getWindows (Windows &windows, bool onlyValid=true)
说明:得到Windows,这里的Windows并不能直接理解为所谓的窗口,应该理解为一个渲染面。执行该函数后windows中就含有了Viewer中的windows,第二个参数表示是否获得激活可用的窗口,false表示不获得,true表示获得,默认值为true。
20、virtual void getAllThreads (Threads &threads, bool onlyActive=true)
说明:得到所有当前Viewer中的线程,执行该函数后threads中会有该Viewer的线程,第二个参数表示是否获得正在激活的线程,false表示不获得,true表示获得,默认值为true。
21、virtual void getOperationThreads (OperationThreads &threads, bool onlyActive=true)
说明:得到操作线程[OperationThreads],执行该函数后threads中会有该Viewer的操作线程,第二个参数表示是否获得正在激活的操作线程,false表示不获得,true表示获得,默认值为true。
22、virtual void getScenes (Scenes &scenes, bool onlyValid=true)
说明:得到当前Viewer的Scenes, 执行该函数后scnes中会有该Viewer的scenes。第二个参数表示是否获得可用的scenes,false表示不获得,默认值为真。
23、virtual void getViews (Views &views, bool onlyValid=true)
说明:得到当前Viewer的View,执行该函数后views中会有该Viewer的views。第二个参数表示是否获得可用的views,false表示不获得,默认值为真。
24、virtual void getUsage (osg::ApplicationUsage &usage) const
说明:得到当前Viewer的命令行描述。
二、osgViewer::ViewerBase类
类描述:是view的基本类,同时也是osgViewer::CompositeViewer和osgViewer::Viewer的父类,由于是osgViewer::Viewer的父类,所以它的方法一般都会提供给osgVIewer::Viewer使用,而且非常重要。
ViewerBase () ViewerBase (const ViewerBase &vb)
说明:构造函数。第二个构造函数为从一个已知的ViewerBase中创建新ViewerBase.,vb为已知的源ViewerBase,用来创建新的ViewerBase
1、void setStats (osg::Stats *stats)
说明:设置状态事件,包含一些事件的响应,状态这里要注意与StateSet的区别,这里是指响应的状态。以及渲染时的一些状态设置。
2、osg::Stats * getStats ()
const osg::Stats * getStats () const
说明:为得到已经设置的状态类,返回值即为状态类指针。
3、virtual bool readConfiguration (const std::string &filename)=0
virtual bool isRealized () const =0
virtual void realize ()=0
说明:以上三个为纯虚函数,会在子类中实现,这是C++的机制决定的,具体些会在osgViewer::Viewer类以及osgViewer::CompositViewer子类中加以实现。
4、virtual void setThreadingModel (ThreadingModel threadingModel)
说明:设置线程模式。其中threadingModel的值可以为:SingleThreaded,CullDrawThreadPerContext,ThreadPerContext,DrawThreadPerContext,CullThreadPerCameraDrawThreadPerContext,ThreadPerCamera,AutomaticSelection
5、ThreadingModel getThreadingModel () const
说明:得到线程模式,返回值为当前的线程模式。
6、virtual ThreadingModel suggestBestThreadingModel ()
说明:根据当前场景的特点,得到一个最好的建议线程模式。返回值为该线程模式。
7、virtual void setUpThreading ()
说明:为每个线程建立相对应的线程模式。
8、bool areThreadsRunning () const
说明:线程是否全部运行。如果全部运行则返回真,否则返回假。
9、virtual void stopThreading ()
说明:停止线程运行。
10、virtual void startThreading ()
说明:开始线程运行。
11、void setEndBarrierPosition (BarrierPosition bp)
说明:选择结束时是在交换Buffer之前还是在交换Buffer之后,bp表示选择结束时的位置,其值可以为以下两个值:BeforeSwapBuffers,AfterSwapBuffers
12、BarrierPosition getEndBarrierPosition () const
说明:得到最后结束时的位置,一般为个人设置的值。返回值为位置值,为BeforeSwapBuffers 或者 AfterSwapBuffers。
13、void setDone (bool done)
说明:设置是否渲染完毕。如果设置为true则程序会结束。
14、bool done () const
说明:返回当前渲染状态,如果没有退出则返回真。
15、void setEventVisitor (osgGA::EventVisitor *eventVisitor)
说明:设置事件遍历器。事件遍历器可以访问事件,eventVisitor为传递过去访问事件的访问器。
16、osgGA::EventVisitor * getEventVisitor () const
说明:得到事件访问器。返回值为事件访问器。
17、void setKeyEventSetsDone (int key)
说明:设置一个键,点击该键时会setDone(true),这也就是说程序会退出。注意:设置后,再按ESC键程序不会像以前一样退出,key为该键的十进制的ASCII编码,比如32代表空格。
18、int getKeyEventSetsDone () const
说明:得到已经设置的按下就会退出的热键。默认是ESC键。返回值为该键的ASCII编码,比如空格为32.
19、void setQuitEventSetsDone (bool flag)
说明:当设置为真时,当程序收到QUIT_APPLICATION消息时会退出。否则会忽略。
20、bool getQuitEventSetsDone () const
说明:是否设置了程序退出标识。
21、void setUpdateVisitor (osgUtil::UpdateVisitor *updateVisitor)
说明:设置更新访问器。访问器[visitor]是个很重要的概念。
22、osgUtil::UpdateVisitor * getUpdateVisitor () const
说明:得到更新访问器。返回值为指向其的指针。
23、void setUpdateOperations (osg::OperationQueue *operations)
说明:设置一个操作序列。
24、osg::OperationQueue * getUpdateOperations () const
说明:得到一个操作序列,返回值为指向该操作序列的指针。
25、void addUpdateOperation (osg::Operation *operation)
说明:添加一个更新操作。
26、void removeUpdateOperation (osg::Operation *operation)
说明:移除一个更新操作。
27、void setRealizeOperation (osg::Operation *op)
说明:设置一个实现操作。
28、osg::Operation * getRealizeOperation ()
说明:得到一个实现操作。返回值为该操作的指针。
29、void checkWindowStatus ()
说明:检查窗口状态,是一系列的内部检查操作。比如查看窗口的尺寸是否为0,若为0退出等等。
30、virtual void frame (double simulationTime=USE_REFERENCE_TIME)
说明:绘制帧,simulationTime表示设置帧绘制时间,一般为参考时间,这个操作在一般情况下是没有意义的。
31、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类。
三、osgGA::KeySwitchMatrixManipulator
类描述:该类可以被看做一个管理器,管理一些被添加到它里面的操作器,用按键来切换这些操作器。比如‘1’会被切换到TrackBall‘2’会被切换到Driver等等。
1、virtual const char * className () const
说明:返回该类名称。
2、void addMatrixManipulator (int key, std::string name, MatrixManipulator *cm)
说明:添加一个操作器到keySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型。比如TrackBall.key表示选择热键,比如49代表数字1,name表示操作器名称,可以自己取个好听的名字,不要用中文,cm表示矩阵操作器指针,加入的就是这个操作器。
3、void addNumberedMatrixManipulator (MatrixManipulator *cm)
说明:添加一个操作器到KeySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型,比如TrackBall。他的热键是递增的,比上一个加入的热键加1,比如上次加入的热键是1那么这个就是2。
4、unsigned int getNumMatrixManipulators () const
说明:得到当前KeySwitchMatrixManipulator中的操作器个数。返回具体数目。
5、void selectMatrixManipulator (unsigned int num)
说明:选择一个操作器,num表示操作器的索引值,指第几个操作器。在加入时是按顺序的。
6、KeyManipMap & getKeyManipMap ()
const KeyManipMap & getKeyManipMap () const
说明:得到绑定到这个KeySwitchMatrixManipulator 中所有的操作器,包含键的映射。返回值是KeyManip其实是一个键-值对,前面为操作器对应的键,比如1,后面是对应的名,比如TrackBall
7、MatrixManipulator * getCurrentMatrixManipulator ()
const MatrixManipulator * getCurrentMatrixManipulator () const
说明:得到当前使用的操作器类,返回该类的指针。
8、MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index)
const MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index) const
说明:得到某一个索引对映的操作器,返回该操作器的指针,index表示操作器的索引值,比如1代表TrackBall.
9、MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key)
const MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key) const
说明:得到某一个热键对映的操作器,返回该操作器的指针。key表示操作器的热键,比如49代表数字键1.
10、virtual void setMinimumDistance (float minimumDistance)
说明:设置最小的距离。在靠近中心的时候视点会按比率伸缩以保持大于该最小矩,minimumDistance表示最小矩离的数字,一般是以米为单位。
11、virtual void setCoordinateFrameCallback (CoordinateFrameCallback *cb)
说明:当前绘制坐标系统的回调,该回调的作用是告诉操作者具体的方向,东西南北。
12、virtual void setByMatrix (const osg::Matrixd &matrix)
说明:用矩阵来设置当前视口。
13、virtual void setByInverseMatrix (const osg::Matrixd &matrix)
说明:用逆矩阵来设置当前视口。
14、virtual osg::Matrixd getMatrix () const
virtual osg::Matrixd getInverseMatrix () const
说明:得到当前视口的矩阵/逆矩阵。
15、virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode () const
说明:得到空间融合距模式。返回值为模式值,为下列值之一:USE_FUSION_DISTANCE_VALUE, PROPORTIONAL_TO_SCREEN_DISTANCE
16、virtual float getFusionDistanceValue () const
说明:得到空间融合距值。
17、virtual void setNode (osg::Node *n)
说明:绑定一个结点到KeySwitchMatrixManipulator,会自动的解除以前的结点。如果设置为NULL,则不绑定任何结点,n表示要帮定的结点的指针。设置为NULL表示解除一切绑定。
18、virtual const osg::Node * getNode () const
virtual osg::Node * getNode ()
说明:得到KeySwitchMatrixManipulator绑定的结点。
19、virtual void setHomePosition (const osg::Vec3d &eye, const osg::Vec3d ¢er, const osg::Vec3d &up, bool autoComputeHomePosition =false)
说明:设置视口原点,一般为按空格键后返回的点。使用欧拉坐标系固定。autoComputeHomePosition表示是否自动计算原点位置,这里默认为false,因为已经指定了视点原点位置。
20、virtual void setAutoComputeHomePosition (bool flag)
说明:说明是否自动计算视口原点位置,flag为真表示自动计算。计算结果一般是包围球的圆心。
21、virtual void computeHomePosition ()
说明:计算视口原点位置。
22、virtual void home (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual void init (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual bool handle (const GUIEventAdapter &ea, GUIActionAdapter &us)
virtual void getUsage (osg::ApplicationUsage &usage) const
说明:上述是响应事件的一些函数,在事件响应一节中会详加解释。
四、osg::ArgumentParser类
类描述:读取main函数参数以及外部参数的类,会自动识别外部参数正确与否,它是个单独的类不能存在继承关系。
1、ArgumentParser (int *argc, char **argv)
说明:构造函数,传入参数为main的两个参数。
2、void setApplicationUsage (ApplicationUsage *usage)
说明:设置应用程序类,该类中含有解析命令行,程序名称等等。
3、ApplicationUsage * getApplicationUsage ()
const ApplicationUsage * getApplicationUsage () const
说明:得到应用程序类。返回值为指向应用程序类的指针。
4、int & argc ()
char ** argv ()
说明:得到argc与argv参数。
5、char * operator[] (int pos)
const char * operator[] (int pos) const
说明:得到第pos个参数的命令串,pos表示第几个参数的索引值,比如1代表整个程序的绝对路径。
6、std::string getApplicationName () const
说明:得到应用程序的名称,返回该名称所对应的字串。
7、int find (const std::string &str) const
说明:得到命令行字符串所对应的索引值。返回该索引值,为整数。索引值意思为该行agrc值,str表示用来查询索引值的命令行字符串。
8、bool isOption (int pos) const
说明:判断该位置是否是操作。类似于-o –help –a 等等前面带单或者双划线的一般视为操作。该函数还可以判断是否为有效操作。如果是有效操作则返回真,如果是字符串不代表操作函义则返回假,pos表示需要判断的字符串的位置值,即argc值。
9、bool isString (int pos) const
说明:判断该位置是否是字符串。类似于glider.osg这样前面不带单双划线的又不是纯数字的被视为字符串。字符串一般会表示文件名。如果是字符串则返回真,否则返回假,pos表示需要判断的字符串的位置值,即argc值。
10、bool isNumber (int pos) const
说明:判断该位置是否是数字,类似于-t 10.0 11.0中两个字符串会被视为数字。如果是数字则返回真,否则返回假,pos表示需要判断的字符串的位置值,即argc值。
11、bool containsOptions () const
说明:看命令行中是否包含操作,如果包含操作则返回真,否则返回假。
12、void remove (int pos, int num=1)
说明:移除某一个位置的字符串。可移除多个字串,默认为1,pos表示需要移除的字符串的起始位置,即argc值,num表示需要移除的字符串的个数,默认值为1。
13、bool match (int pos, const std::string &str) const
说明:看pos位置的字串与str是否批配,如果批配则返回真,否则返回假,pos表示需要判断的字符串的起始位置,即argc值,str表示需要判断的目的串值。
14、bool read (const std::string &str)
bool read (const std::string &str, Parameter value1)
bool read (const std::string &str, Parameter value1, Parameter value2)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7)
bool read (const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7, Parameter value8)
bool read (int pos, const std::string &str)
bool read (int pos, const std::string &str, Parameter value1)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7)
bool read (int pos, const std::string &str, Parameter value1, Parameter value2, Parameter value3, Parameter value4, Parameter value5, Parameter value6, Parameter value7, Parameter value8)
说明:为实际的读命令行的操作以及其对应的参数。返回值表:如果有该操作串且参数值也满足就返回真,否则返回假。比如read(“-h”)如果有-h则返回真,否则返回假,pos表示需要读取的字符串的起始位置,即argc值,str表示需要读取的字符串的值,value表示带表读入的参数值,可以是整型,实型,布尔型等等。实际枚举值为:BOOL_PARAMETER,FLOAT_PARAMETER,DOUBLE_PARAMETER,INT_PARAMETER,UNSIGNED_INT_PARAMETER,STRING_PARAMETER
15、bool errors (ErrorSeverity severity=BENIGN) const
说明:检查命令行是否有错误,如果有错误则返回真。参数代表检查的级别,分两种,一种是小错,一种就致命错。小错代表不能识别的错误,致命错则可能是其它的任何错误,severity代表要检查的错误是小错还是致命错,以般有以下两个值: BENIGN,CRITICAL默认是小错
16、void reportError (const std::string &message, ErrorSeverity severity=CRITICAL)
说明:报告命令行错误。输出错误信息到message.默认是报告致命的错误级别。输出的错误信息到message.,报告错误的级别,默认是致命错误。可以是BEGIN,CRITICAL
17、void reportRemainingOptionsAsUnrecognized (ErrorSeverity severity=BENIGN)
说明:报告命令行中无法识别的字符串,相当于小错级别,默认为是小错级别,报告命令行中无法识别的字符串,默认是小错级别
18、ErrorMessageMap & getErrorMessageMap ()
const ErrorMessageMap & getErrorMessageMap () const
说明:得到一个错误的消息映射,该映射定义为,键为错误串名,值为错误级别。Error的实际定义是这样的:std::map<std::string,ErrorSeverity>
19、void writeErrorMessages (std::ostream &output, ErrorSeverity sevrity=BENIGN)
说明:输出命令行错误到output,默认输出小错误级别,output一般是std::cout
相关文章推荐
- 学习laravel遇到的问题
- FTP工作原理
- 如何设置让基于matplotlib的绘图库正常的显示no-ascii字符(中文字符)
- PHPStorm 10.0 注册方式
- php字符串分割
- php 打开文件、字段替换、写入文件
- PHP入门
- PHP报错显示
- php文件操作相关函数
- 周一干不干活-PHP+MySQLi
- FragmentPagerAdapter 与 FragmentStatePagerAdapter 的区别
- phpmyadmin显示数据库中文正确php页面输出??乱码的解决方法
- 上传文件到服务器时,getParamter()方法 与表单 enctype="multipart/form-data"属性
- PHP后门新玩法:一款猥琐的PHP后门分析
- PHP计算当前时间之后(之前)的时间
- vsftpd.conf 详解与实例配置
- PHP变量作用域
- phpstorm
- 最新版本的php 适配ecshop
- phpstorm配置代码自动同步到服务器