1. Examples osgbillboard
这个项目很简单,就几个函数,而且很有意思。 osg::Billboard类是一个控制器,不管你怎么旋转漫游场景,它始终都会朝向摄像机。
1.1 运行
1.2 调试、阅读代码
看里面代码时,就会接触到osg的核心类了,比如
- osg::Geometry
- osg::Vec3Array
- osg::StateSet
- osg::Group
- osgViewer::Viewer
- 等等
这里面的类又会引用到其他类,慢慢展开,但是大体上都是属于 OSG Core/osg 项目中的内容,也就是osg核心类。
值得提及的是,OSG Core文件夹下第一个项目是OpenThreads,如下图所示: 这个库比较有名,它是一个多线程库,关于OpenThreads,不难,可以参考我的另外一篇文章:
接下来要了解以下一些类:
- OSG Core/osg/DeleteHandler
- OSG Core/osg/Referenced
- OSG Core/osg/Object
- OSG Core/osg/ref_ptr
- OSG Core/osg/Observer
- OSG Core/osg/Node
- OSG Core/osg/Drawable
- OSG Core/osg/Geometry
- OSG Core/osg/BufferObject
- OSG Core/osg/BufferData
- OSG Core/osg/Array
- 更多的相关内容,可以打开项目下的更多依赖项查看。
关于引用计数:
- boost::intrusive_ptr的用法
- 理解共享指针和对象自带引用计数的区别。std::shared_ptr类似于Qt中的QSharedPointer;而osg::ref_ptr+Referenced类似于QSharedData+QSharedDataPointer。
其他:
有些地方看不懂没关系,最起码要知道某个类在哪个项目中,主要功能是什么。不用着急,见多了用多了,自然就记住并理解了。
|