八、OSG学习笔记-
前一章节:
七、OSG学习笔记-碰撞检测-CSDN博客
https://blog.csdn.net/weixin_36323170/article/details/145558132?spm=1001.2014.3001.5501
一、了解OSG图元加载显示流程
本章节代码:
OsgStudy/wids · CuiQingCheng/OsgStudy - 码云 - 开源中国
https://gitee.com/cuiqingcheng/osg-study/tree/master/OsgStudy/wids
图解流程:

这里主要涉及的头文件类为:
#include<osgViewer/Viewer> // 依赖该文件#include<osg/GraphicsContext> // 图形界面类
osg::GraphicsContext::WindowingSystemInterface // 设备类
#include<windows.h>
#include<iostream>
#include<osgViewer/Viewer> // 依赖该文件#include<osg/GraphicsContext> // 图形界面类int main()
{osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;// osg::GraphicsContext::WindowingSystemInterface 为 Viewer,中静态创建的,只需要有Viewer,就可以了。osg::GraphicsContext::WindowingSystemInterface* ws = osg::GraphicsContext::getWindowingSystemInterface();if (!ws){std::cout << "Get device interface failure, WindowingSystemInterface is Null" << std::endl;}else{// ws 就是设备窗口的对象。std::cout << "Get device interface success!" << std::endl; }return 0;
}
下面代码中用于获取设备分辨率,跟设置分辨率:
#include<windows.h>
#include<iostream>
#include<osgViewer/Viewer>
#include<osg/GraphicsContext>int main()
{osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;// osg::GraphicsContext::WindowingSystemInterface 为 Viewer,中静态创建的,只需要有Viewer,就可以了。osg::GraphicsContext::WindowingSystemInterface* ws = osg::GraphicsContext::getWindowingSystemInterface();unsigned int height = 0;unsigned int width = 0;// 用于配置图形上下文(如窗口或离屏渲染环境)的核心类。// Traits: 类的主要功能是定义图形上下文的初始化属性,包括窗口属性、硬件加速选项、缓冲区配置等。// 通过设置其成员变量,开发者可以灵活控制 OSG 应用程序的渲染环境。osg::GraphicsContext::Traits traits;if (!ws){std::cout << "Get device interface failure, WindowingSystemInterface is Null" << std::endl;}else{std::cout << "Get device interface success!" << std::endl;ws->getScreenResolution(traits, width, height);std::cout << "系统分辨率为:" << width << " X " << height << std::endl;std::cout << "边框:" << traits.windowDecoration << std::endl;traits.x = 0;traits.y = 0;traits.width = 800;traits.height = 600;// 还可以设置设备的分辨率:(谨慎使用)ws->setScreenResolution(traits, 800, 600);//这句代码后两个参数会修改屏幕分辨率。}return 0;
}
程序执行结果如下图:

windows,中查看显示设置,如下图,结果表面二者结果一致,获取正确。

调整窗口大小:
代码如下:
#include<windows.h>
#include<iostream>#include<osgViewer/Viewer>
#include<osgViewer/ViewerEventHandlers>
#include <osg/GraphicsContext>
#include <osgDB/ReadFile>// UI事件
#include<osgGA/GUIEventHandler>
#include<osgGA/GUIActionAdapter>class ChangeWindow : public osgGA::GUIEventHandler
{
public:ChangeWindow() {m_first = false;}bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa){if (!m_first){osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);osgViewer::Viewer::Windows ws;m_first = true;viewer->getWindows(ws);if (!ws.empty()){// 设置窗口大小,启始坐标:osgViewer::Viewer::Windows::iterator iter = ws.begin();for (; iter != ws.end(); iter++){(*iter)->setWindowRectangle(320, 100, 1600, 1000);// 去除边框:(*iter)->setWindowDecoration(false);// 设置不使用鼠标//(*iter)->useCursor(false);// 设置鼠标样式(*iter)->setCursor(osgViewer::GraphicsWindow::WaitCursor);}}}return false;}private:bool m_first{false};
};int main()
{osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;osgViewer::Viewer::Windows ws;viewer->setSceneData(osgDB::readNodeFile("glider.osg"));viewer->getWindows(ws);if (ws.empty()){std::cout << "has not create windows" << std::endl;}viewer->addEventHandler(new ChangeWindow());viewer->run(); // run 函数中创建窗口。return 0;
}
相关文章:
八、OSG学习笔记-
前一章节: 七、OSG学习笔记-碰撞检测-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145558132?spm1001.2014.3001.5501 一、了解OSG图元加载显示流程 本章节代码: OsgStudy/wids CuiQingCheng/OsgStudy - 码云 - 开源中国https:…...
本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui
通过ollama本地部署deepseek 总共两步 1.模型部署 2.[web页面] 参考官网 ollama:模型部署 https://ollama.com/ open-webui:web页面 https://github.com/open-webui/open-webui 设备参考 Mac M 芯片 windows未知 蒸馏模型版本:deepseek-r1:14b 运行情况macminim2 24256 本地…...
网络分析工具—WireShark的安装及使用
Wireshark 是一个广泛使用的网络协议分析工具,常被网络管理员、开发人员和安全专家用来捕获和分析网络数据包。它支持多种网络协议,能够帮助用户深入理解网络流量、诊断网络问题以及进行安全分析。 Wireshark 的主要功能 数据包捕获与分析: …...
MobaXterm的图形化界面支持:原理与分辨率问题解决
1. 概述 MobaXterm 是一款功能强大的远程访问工具,支持SSH、RDP、X11、VNC等多种协议,并内置了强大的图形界面支持,让用户能够在远程操作Linux/Unix系统时,享受到类似本地桌面的流畅体验。 与传统的SSH客户端不同,Mo…...
Java JVM(Java Virtual Machine)解析
Java Virtual Machine(JVM)是Java平台的核心组成部分,它负责执行Java字节码,并提供了一个运行时环境。本文将深入探讨JVM的工作原理、组成部分以及其在Java开发中的重要性。 一、JVM的基本概念 JVM是一个虚拟的计算机࿰…...
pytest测试专题 - 1.2 如何获得美观的测试报告
<< 返回目录 1 pytest测试专题 - 1.2 如何获得美观的测试报告 1.1 背景 虽然pytest命令的报文很详细,用例在执行调试时还算比较方便阅读和提取失败信息, 但对于大量测试用例运行时,可能会存在以下不足 报文被冲掉测试日志没法归档 …...
现阶段股指期货交易保证金和费用多少?股指期货一手多少钱?
股指期货交易的保证金就是你在买卖股指期货合约时,需存入交易账户的一笔资金。 股指期货交易保证金是多少? 股指期货的交易保证金就像是租房时的押金,确保你能承担交易带来的风险。 一般来说,保证金的比例大概在合约价值的12-14…...
使用mermaid画流程图
本文介绍使用mermaid画流程图,并给出几个示例。 背景 目前,除有明确格式要求的文档外,笔者一般使用markdown写文档、笔记。当文档有图片时,使用Typora等软件可实时渲染,所见即所得。但如果文档接收方没有安装相关工具…...
大模型笔记:pytorch实现MOE
0 导入库 import torch import torch.nn as nn import torch.nn.functional as F 1 专家模型 #一个简单的专家模型,可以是任何神经网络架构 class Expert(nn.Module):def __init__(self, input_size, output_size):super(Expert, self).__init__()self.fc nn.L…...
HAL库USART中断接收的相关问题
文章目录 一、使用中断的步骤二、相关函数分析1、HAL_UART_IRQHandler2、UART_Receive_IT3、HAL_UART_Receive_IT4、UART_Start_Receive_IT5、总结 三、HAL库使用心得 一、使用中断的步骤 1、配置GPIO 2、配置USART1 3、设置UART1中断优先级(不开启手动中断&#x…...
@Transational事务注解底层原理以及什么场景事务会失效
Transactional的底层是如何实现的 底层是通过动态代理实现的。Spring Boot 在运行时会生成一个代理对象,该代理对象被注解的方法调用,并在方法调用前后进行事务管理,事务管理包括开启事务,提交事务或回滚事务等操作。 1开启事务 …...
Linux扩容磁盘
启动 fdisk sudo fdisk /dev/sda输入p命令查询分区列表 输入d命令删除所有分区 需要一个一个删 输入n命令创建新分区 40G可以不用输入,直接回车使用默认 输入w命令保存操作 查看分区情况 sudo fdisk -l会发现sda1不是启动分区(Boot列不是号&a…...
全面解析鸿蒙(HarmonyOS)开发:从入门到实战,构建万物互联新时代
文章目录 引言 一、鸿蒙操作系统概述二、鸿蒙开发环境搭建三、鸿蒙核心开发技术1. **ArkUI框架**2. **分布式能力开发**3. **原子化服务与元服务** 四、实战案例:构建分布式音乐播放器五、鸿蒙开发工具与调试技巧六、鸿蒙生态与未来展望结语 引言 随着万物互联时代…...
Uniapp 原生组件层级过高问题及解决方案
文章目录 一、引言🏅二、问题描述📌三、问题原因❓四、解决方案💯4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结Ἰ…...
Android adb测试常用命令大全
目录 一、查看最上层成activity名字: 二、查看Activity的任务栈: 三、获取安装包信息 四、性能相关 1、显示CPU信息 : 2、查看CPU使用信息 3、内存信息(meminfo package_name or pid 使用程序的包名或者进程id显示内存信息) 4、电量信…...
linux的基础入门2
linux的root用户 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户名为:root(超级管理员) 而在前期,我们一直使用的账户是普通的用户 普通用户的权限,一般在其HOME目录内是不受限的 一旦出了HOME目录…...
19.4.8 数据库综合运用
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 需要北风数据库的请留言自己的信箱。 本节中将通过实例综合展示对数据表的查询、增加、修改和删除。 【例 19.16】【项目…...
JAVA中的抽象学习
一、Java SE 中的抽象概念 在 Java 中,抽象(Abstraction)是面向对象编程的重要特性之一。抽象的核心思想是“只关注重要的特性,而忽略不重要的细节”。抽象通常通过抽象类和接口来实现,它帮助开发者将复杂的系统隐藏在…...
在 Go 中实现事件溯源:构建高效且可扩展的系统
事件溯源(Event Sourcing)是一种强大的架构模式,它通过记录系统状态的变化(事件)来重建系统的历史状态。这种模式特别适合需要高可扩展性、可追溯性和解耦的系统。在 Go 语言中,事件溯源可以通过一些简单的…...
加解密 | AES加、解密学习
加解密 | AES加、解密学习 你的代码实现了一个简单的AES(高级加密标准)加密和解密的测试程序。以下是对代码的分析和一些改进建议: 代码功能 初始化数据和密钥: 定义了一个16字节的输入数据 input_data。定义了一个16字节的AES…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
