十二OSG学习笔记-Control
目录
十二、OSG学习笔记-Control
上一章节:
[十一、OSG学习笔记-操作系统接口-CSDN博客
“十一、OSG学习笔记-操作系统接口-CSDN博客”)
本章节代码:
[OsgStudy/Controls · CuiQingCheng/OsgStudy - 码云 - 开源中国
“OsgStudy/Controls · CuiQingCheng/OsgStudy - 码云 - 开源中国”)
一、Viewer介绍
osg::Referenced: 负责内存安全策略,智能指针ref_ptr;
osg::Object:负责对象的安全策略,数据IO的写入写出;
1、osgViewer::ViewerBase类中成员变量的介绍:
ViewerBase实例代码:
#include <windows.h>
#include <iostream>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgGA/TrackballManipulator>
#include <osgGA/GUIEventAdapter>
int main() {
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->setSceneData(osgDB::readNodeFile("glider.osg"));
// 设置默认操作器
viewer->setCameraManipulator(new osgGA::TrackballManipulator);
viewer->realize();
viewer->setKeyEventSetsDone(osgGA::GUIEventAdapter::KEY_KP_Space);
// 线程渲染模式
std::cout << "Threading model: " << viewer->getThreadingModel() << std::endl;
viewer->run();
/* 替代 run()的作用
int frameNum = 300;
while (!(viewer->done()))
{
if (frameNum)
{
viewer->setDone(true);
std::cout << "No need to Continue " << frameNum << std::endl;// 300帧渲染完了,就推出渲染
}
frameNum--;
viewer->frame();
}
*/
return 0;
}
2、Osg::View的用法: