目录

十二OSG学习笔记-Control

十二、OSG学习笔记-Control

上一章节:

[十一、OSG学习笔记-操作系统接口-CSDN博客

https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7 “十一、OSG学习笔记-操作系统接口-CSDN博客”)

本章节代码:

[OsgStudy/Controls · CuiQingCheng/OsgStudy - 码云 - 开源中国

https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7 “OsgStudy/Controls · CuiQingCheng/OsgStudy - 码云 - 开源中国”)

一、Viewer介绍

osg::Referenced: 负责内存安全策略,智能指针ref_ptr;

osg::Object:负责对象的安全策略,数据IO的写入写出;

https://i-blog.csdnimg.cn/direct/9c1bb22a2e1a49cbb95236fccd53784f.png

1、osgViewer::ViewerBase类中成员变量的介绍:

https://i-blog.csdnimg.cn/direct/36c17f481d294c049a254a89a686ffd1.png

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的用法:

https://i-blog.csdnimg.cn/direct/8d668efbf3a1467b9aa5fa07129ccfd1.png

https://i-blog.csdnimg.cn/direct/40e0c8351df34e7f9882a098351b9d22.png

下一章节: