当前位置: 首页 > news >正文

十二、OSG学习笔记-Control

上一章节:

十一、OSG学习笔记-操作系统接口-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145891502

本章节代码:

OsgStudy/Controls · CuiQingCheng/OsgStudy - 码云 - 开源中国https://gitee.com/cuiqingcheng/osg-study/tree/master/OsgStudy/Controls

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

相关文章:

  • 手游ASO优化:2025年核心策略与未来趋势
  • DropDown的使用总结
  • C/C++蓝桥杯算法真题打卡(Day1)
  • 如何面向DeepSeek编程,打造游戏开发工具集,提升工作效率
  • 缓存雪崩 缓存击穿 缓存穿透
  • 综合使用pandas、numpy、matplotlib、seaborn库做数据分析、挖掘、可视化项目
  • Django 中,Form 和 ModelForm的用法和区别
  • 在虚拟机上安装Hadoop
  • 基于单片机的速度里程表设计(论文+源码)
  • vue3 组合式API:插槽
  • 【机器学习chp11】聚类(K均值+高斯混合模型+层次聚类+基于密度的聚类DBSCAN+基于图的聚类+聚类的性能评价指标)
  • C语言程序设计第一章习题
  • Linux - 线程控制
  • CES Asia 2025:AR/VR/XR论坛峰会备受瞩目
  • Python的Pandas和matplotlib库:让数据可视化贼简单
  • Scala:解构声明(用例子通俗易懂)
  • Leetcode2848:与车相交的点
  • 前端图片加载错误原因分析
  • 异常(5)
  • 大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比
  • vps怎么搭建网站/独立站谷歌seo
  • 广州小企业网站制作/厦门人才网官网招聘信息网
  • 网站运行维护/昆明seo案例
  • 用c 可以做网站吗/经济新闻最新消息财经
  • 东莞+网站+建设+汽车/seo交流论坛
  • 手机网站制作行业排行/天堂网长尾关键词挖掘网站