上QQ阅读APP看书,第一时间看更新
Time for action—improving the "Hello World" example
The included headers, <osgDB/ReadFile>
and <osgViewer/Viewer>
, do not need to be modified. We only add a root variable that provides the runtime access to the Cessna model and assigns it to the setSceneData()
method.
- In the main entry, record the Cessna model with a variable named
root:
osg::ref_ptr<osg::Node> root = osgDB::readNodeFile("cessna.osg"); osgViewer::Viewer viewer; viewer.setSceneData( root.get() ); return viewer.run();
- Build and run it at once:
- You will see no difference between this example and the previous "Hello World". So what actually happened?
What just happened?
In this example, we introduced two new OSG classes: osg::ref_ptr<>
and osg::Node
. The osg::Node
class represents the basic element of a scene graph. The variable root
stands for the root node of a Cessna model, which is used as the scene data to be visualized.
Meanwhile, an instance of the osg::ref_ptr<>
class template is created to manage the node object. It is a smart pointer, which provides additional features for the purpose of efficient memory management.