解决Ogre的渲染窗口無法固定大小,隨著MainWindow的變化而變化

OGREQt的结合(一)----使用OGRE渲染QWidget 最近几天开始重新学习Ogre,这次从源码编译了Ogre2.1,编译过程基本跟Ogre1.8.1类似,连第三方依赖库都是用的官网推荐的以前版本的,此处不多说了,网上有很多教程,现在给出下载连接。          Ogre2.1的源码:  https://bitbucket.org/sinbad/ogre/branch/v2-1          Dependencies: https://bi 阅读详情

我們現在來看看之前提出的需求:

如果你直接這樣做:

?
1
2
3
4
5
QScrollArea *pScroll = new pScroll;
  
OgreWidget *pOgreWidget = new OgreWidget(pScroll );
  
pScroll->setWidget(pOgreWidget );

你會發現有問題,Ogre已經不再渲染到Qt了,滾動條可以看見並且可用狀態,但是Ogre沒了.

如果你這樣做:

?
1
2
3
QScrollArea *pScroll = new pScroll;
  
OgreWidget *pOgreWidget = new OgreWidget(pScroll );

你可以看到Ogre已經渲染到了QScrollArea的區域裡面,但是QScrollArea卻不能正常工作了,滾動條消失了,即使通過

?
1
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)

這樣的方法強制打開滾動條,發現滾動條雖然可以看見了,但是不可用灰色狀態.

那麼該怎麼辦呢?這個問題困擾了幾十分鐘之後,終於想到了方法。我們僅僅只需要一個QWidget來過度即可.

像這樣:

?
1
2
3
4
5
6
7
QWidget *pRenderWidget = new QWidget;
  
OgreWidget *pOgreWidget = new OgreWidget(pRenderWidget );
  
QScrollArea *pScroll = new pScroll;
  
pScroll->setWidget(pRenderWidget );

然後我們再設定一下OgreWidget的固定大小值,然後就解決了文章提出的兩個需求.

Ogre窗口嵌入QWidget 之前在QWidget中显示Ogre渲染结果使用了rtt,构造QImage后使用QWidget的paintEvent绘制。但是总是觉得多此一举,因为是可以让Ogre直接在窗口上绘制出渲染结果的。 Ogre::RenderWindow * OgreObject::createWindow(QWidget *ptr , Ogre::String name) 该函数负责创建名为name的Og 阅读详情

相关推荐

特斯拉数字孪生4.0体系解析:从“数字镜像“到“持续进化“的造车革命

当每一辆汽车都拥有自己的“数字分身”,我们正见证的不仅是技术革新,更是整个制造业文明形态的跃迁。其数字孪生体已超越“数字镜像”的被动属性,成为。特斯拉年服务收入超1200美元/车的业绩表明,数字孪生正在将汽车从“交通工具”转变为“持续增值的智能终端”。构建起覆盖设计、制造、使用、服务全链条的虚拟镜像体系,将物理世界与数字世界的融合推向新高度。:特斯拉的实践证明,数字孪生已从“技术选项”升级为“战略必选项”。不仅重塑了汽车产品的价值创造逻辑,更预示着整个制造业向“元宇宙工业”演进的新范式。

beige888的博客 1566

Ogre + windows

////////////////////Ogre部分的修改////////////////////////  ///创建窗口 Ogre::NameValuePairList params; Ogre::String handle; handle = Ogre::StringConverter::toString((size_t)(hWnd)); params["externalWindow

StoneChang的专栏 1164

矩阵束(Matrix Pencil)入门:从通信系统到控制理论,它为何是建模利器?

本文深入探讨矩阵束(Matrix Pencil)在通信系统与控制理论中的关键作用,揭示其作为复杂系统建模利器的独特价值。从MIMO系统的多径干扰分析到电力系统稳定性判据,矩阵束通过`A-λB`方程求解提供精准建模方案,显著提升5G通信和工业控制等领域的性能表现。

weixin_30134145的博客 325

Qt使用Ogre引擎开发3d项目

对于个人开发者来说,选择开源工具应该是最好的选择。 此次选择 开源建模软件Blender + 开源3d渲染引擎Ogre + 开源程序框架Qt来实现。 Ogre下载 https://www.ogre3d.org/ Blender下载 https://www.blender.org/ Blender导出Ogre模型 https://github.com/OGRECave/blender2ogre Qt调用Ogre 参考这里:https://ogrecave.github.io/ogre/api/latest/s

joyopirate的博客 3311

Ogre中的多窗口渲染方法

最近由于工作的关系,希望用一个3D图形引擎实现棋牌类的2D游戏桌面。为了提供尽可能好的兼容性,选择了Ogre作为后台渲染引擎,因为它的评价在开源3D引擎中很不错,而且同时支持Opengl和D3D,所以没有多想就选择了它。到后期才发现,Ogre虽然是号称“Object Oriented Graphics Render Engine”,而且确实在场景,相机,窗口等等的三维对象的建模上做得相当不错,但是

痞子龙3D编程 3539

Qt控件嵌入Ogre的方法

原理,通过QPainter将QT的控件的显示交由Ogre渲染,通过Overlay 意义:使QT的UI操作能应用到Ogre,不用使用CEGUI或其他UI库 效果图,

gws09876的博客 747

Ogre中设置渲染性能参数

 在ogre示例框架程序启动时,我们会看到一个配置窗口,在这个Rendering Setup配置窗口中,我们可以设置窗口启动大小、抗锯齿度、是否垂直同步、是否Gamma校正等。在Ogre::Root中有showConfigDialog方法来显示配置窗口ogre会自动调会Root::restoreConfig来填充这个窗口中的参数。       如果我们不想用ogre的配置窗口来设置参数怎么办呢?

tulun的专栏 2053

Ogre使用外部渲染窗口

就是让Ogre不自己创建渲染窗口,而由第三方来创建。

shaoxiaoning的专栏 2422

create windowl

      函数功能:该函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的)。该函数也指定该窗口的父窗口或所属窗口(如果存在的话),及窗口的菜单。若要使用除CreateWindow函数支持的风格外的扩展风格,则使用CreateWindowEx函数代替CreateWindow函数。    函数原型:HWND CreateWindow(LPC

518

Ogre 界面

Mage小组 著Email: norman_chen@163.com  renwind@163.com QQ: 18725262http://www.173d8.comhttp://blog.csdn.net/pizi0475  界面 这里的界面是指菜单、HUD及提示信息框在内的综合体。基本概念Overlay将被渲染在“普通”场景内容之上的层。Overlay是那些将在主场景被渲染之后才

痞子龙3D编程 5348

转载:OGRE一起学(十一) 去掉烦人的设置窗口

第十一章 去掉烦人的设置窗口 OGRE 的设置窗口比较烦人,每次运行示例都要先弹出这个窗口,从开始学习 OGRE 的第一天起我就想除掉它,另有一个原因是只要解决了这个设置窗口的问题,就可以完全抛开 ExampleApplication.h 和 ExampleFrameListener.h ,建立起完全适合自己的应用程序框架。 但是对于初学者来说这是一个不大不小的拦路虎,主要是因为对公用头文...

weixin_30586257的博客 175

OGRE去掉弹出的配置窗口

在我们开始学习OGRE的时候,网上或者入门的书中经常会与 ExampleApplication.h 和 ExampleFrameListener.h为依托去学习,但是会经常弹出讨厌的配置对话框,我们看一下ExampleApplicatin.h里面的configure函数:   virtual bool configure(void) { // Show the c

落枫的专栏 1652

OGRE 初始化

第四章 Ogre的初始化 读到这本书的这个章节的时候,相信你已经很好的了解了Ogre 3D的设计理念,以及其中各部分协同工作的方式。现在已经可以开始用Ogre API真正的写一个应用程序了。这个章节给你提供一个简单的开端,实现了一个Ogre API的外壳,这些内容也是任何Ogre应用程序所需要的基础。 Ogre最有名的“卖点”之一,就是它所拥有的良好的适应性以及弹性。你可以根据自己

debugconsole的专栏 3923

MyGUI_Orge官网教程_5.窗口部件控制

创建 手工 创建一个没有父亲的窗口部件widget: MyGUI::Gui::getInstance().createWidgetMyGUI::widget_type>("skin_name", x, y, w, h, MyGUI::Align, "layer_name"[, "widget_name"]); MyGUI::Gui::getInstance().createWidget

The Way To My Dream 1431

OGRE3D入门探索01:将渲染窗口嵌入到Win32主窗口

从《OGRE3D引擎入门重拾》这篇文章开始,本系列关注OGRE3D渲染引擎及其周边应用。 本文以一个简单的示例来说明如何将Ogre渲染窗口嵌入到另一个父窗口中, 为了增加趣味性(就是这么任性哈)我特意增加了FMOD的音乐播放支持。 首先将代码贴上来吧 /////////////////////////////////////////////////...

akzc42847的博客 344

整理获取 viewport 和 element 尺寸和位置方法

整理获取 viewport 和 element 尺寸和位置方法 ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 视口页面或窗口的位置和宽高 获取视口宽高 下面方法是包括滚动条的宽高,不支持 IE8 window.innerWidth window.innerHeight 复制代码 width + padding + border + 滚动条 另外 outerWidth 浏览器兼容差,...

weixin_34348805的博客 589

Ogre渲染优化心得

做商业网络游戏的话,效率是一个不可避免的话题,为了留更多的空间给客户端的逻辑,那么渲染模块就应该尽量高效. 小弟只浅谈一下Ogre渲染优化,以大家熟悉的天龙八部为例. 以网上流传版本的天龙代码来看,Ogre和CEGUI部分的渲染都有严重的性能问题, Ogre: 地形的实现,一个tile,只按材质做了批次优化,并没有按材质做摄像机的裁剪,导致游戏视角下批次增加很多 静态实体的合并,完全错误的做法,

痞子龙3D编程 2926

【深入浅出】之Qt 事件系统实战:鼠标、键盘、滚轮、窗口与定时器事件

这 7 个事件让我从另一条路线重新认识了 Qt 界面交互:按钮点击不只是一个孤零零的信号,鼠标、键盘、窗口和定时器背后,还有一套持续运转的事件系统。 从 `enterEvent()` 到 `timerEvent()`,函数名称虽然不同,但使用方式有明显的共同规律:确认事件类型、重写对应函数、读取事件对象、完成自己的处理,并根据需要保留父类原有行为。

wszhj_的博客 311

Qt 无边框窗口自己实现拖拽与缩放

flyfish

二分掌柜的 383

射频通信电路答案完整版 陈邦媛!!!!

射频通信电路答案完整版 陈邦媛!!!!绝对是最全的答案,网上很难找的哦!!!!!

上一篇: Graphics View Framework Key Features(简译)未完
下一篇: QML Data Models 数据模型<一>
ape_neu
博客等级 码龄15年 18粉丝 27原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值