osg基础知识

今天看osg的视频学习了两个知识点:
1.定时器
2.基本图元

定时器:
osg::Timer类和osg::FrameStamp两个类来实现定时器。通过计算当前帧来和每秒需要播放的帧数来设置sleep值。有两种方法可以读取加载模型前后的时间,通过Frame来读取当前帧数。其实我家没有去看最长的一帧,据说很经典,对帧数的理解很是浅薄,等看了之后,再把这边补上。

基本图元:
在osg中,场景图形采用一种自顶向下,分层的树状数据结构来组织空间数据集,以提高渲染效率。场景图形树结构自顶部是一个根结点,从根结点向下延伸,各个组节点中均包含了几何信息和用于控制其外观的渲染状态信息。根结点和各个组节点都可以有0个或多个子成员。在场景图形的最底部,各个叶结点包含了构成场景中物体的实际几何信息。几何体简单点来说就是场景图形节点下面悬挂的物体呐~484

osg中所有的几何体的渲染都必须与Geode相关,Geode类,使用addDrawable()函数来关联应用程序中需要渲染的几何信息。一个Geode可以包含多个Drawable,通过addDrawable()方法加入Geode类中,生成一个Geomety或者是一个shapedrawable。

在osg中生成几何体的三种方法:1.松散封装的OpenGL绘图基元osg::Drawable;2.OSG中预定义的基本几何体;3.从文件中导入的场景模型
这三个方法的基类都是osg::Drawable,派生子osg::Object(该类派生子osg::referenced),最常用的是DrawPixels,Geometry,shapedrawable,osgText::TextBase,其中:DrawPixel用于绘制图像;osgText用于绘制文字;在场景中添加一个几何体,必须要先定义一个Geode用于添加图形节点;,通过addDrawable来添加osg::drawable类型。在该类的构造函数中提供了关联osg::Shape的方法:实际应用中提供了osg::ShapeDrawable来完成这个功能
ShapeDrawable(Shape shape,TessellationHints hints=0)//第一个参数即为要绘制的几何体,第二个为网格化类,主要用于设置几何体的精细程度。绘制几何图元对象时,先创建一个Geometry对象,这个对象中要设置绘制所需的基本信息,图元的顶点、顶点颜色、顶点关联方式以及法线。

今天通过写小例子对osg算是有了一个入门的认识!虽然说看视频是效率最低的行为,不过我觉得能通过这个来入门也是不错(对我这种笨人来说可能很适合)