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

ImGui和Retained GUI的区别

背景

内容

使用上的区别

ImGui是每一帧告诉GPU现在UI的样子。
Retained GUI是构造一次GUI,然后有需要的时候修改它。

Mental model shortcut
ImGui: “Every frame, tell the UI what it looks like right now.”
Retained GUI: “Build a UI once, then modify it over time.”

技术实现的区别

ImGui的drawCall没有合批, Retained GUI 会尽量合批。

ImGui

Unity中我们无法绕过的ImGui接口是GUIStyle.Draw,基本上所有EditorGUI的接口都依赖这个函数。
这个函数对应到C++代码,就是GUIStyle.cppGUIStyle::Draw函数。里面会分别调用DrawBackgroundDrawContent,这两个接口最终会调用GUITexture.CPP文件内的DrawGUITexture函数。

DrawGUITexture函数中的FillGUITextureVBOChunkInverted会将上层的参数转化为GPU所需的VBO相关数据(顶点数据),最后通过GfxDevice发起DrawCall。

可以说 Unity的ImGui是对底层渲染接口的简单封装,一次GUIStyle.Draw函数对应了一个SetPass和一个Draw

Retained GUI

C#
Camera.Render->
CPP
Camera::StandaloneRender->Camera::Render->Camera::DoRender->

或者是

WinMain.cpp里面的PlayerMainWndProc->RenderManager::RenderCameras->Camera::Render->

Camera::DoRender-> DoRenderLoop ->ForwardShaderRenderLoop.cpp里面的DoForwardShaderRenderLoop(或者DoForwardVertexRenderLoop)
->ForwardShaderRenderLoop::PerformRendering->BatchRenderer::Add->BatchRenderer::Flush
MeshRenderer::RenderMultiple会调用MeshRenderer.cpp里的RenderDynamicBatch
RenderDynamicBatch 会分别调用GfxDevice.BeginDynamicBatching GfxDevice.DynamicBatchMesh GfxDevice.EndDynamicBatching

RenderManagerInvokeOnRenderObjectCallbacks 会调用 MonoBehavior.OnRenderObject

综合对比

Aspect ImGui Retained GUI
GPU calls per frame Yes Yes
Rebuild vertex data Every frame Only when dirty
GPU buffer reuse Rare Common
Draw call batching Limited Strong
CPU cost Higher Lower (steady UI)

参考

https://chatgpt.com/

http://www.jsqmd.com/news/171487/

相关文章:

  • 医用呼吸机品牌解析:技术实力与临床应用参考 - 品牌排行榜
  • 2025美国投资移民中介TOP5权威推荐:深度测评移民公司 - mypinpai
  • 2025年贵阳西点烘焙培训学校排名,贵阳欧米奇西点长期课程优势解析 - 工业品网
  • 2025年高口碑国内特色美食直销平台推荐,西宁特色美食批发平台揭晓! - 睿易优选
  • 【SPIE出版 | EI检索】第二届光通信、信号处理与光学工程国际学术会议(OCSPOE 2026)
  • 揭秘C++26契约编程:如何用Contracts实现零容忍错误校验
  • 2025年潜水回流泵靠谱生产商选择指南,口碑好性价比高的潜水回流泵厂家年度排名 - 工业设备
  • ### 天脑体系V∞·13824D完全体终极架构与全域落地研究报告  (生物计算与隐私计算融合版)
  • Markdown脚注解释TensorFlow专业术语含义
  • Java物联网数据处理性能优化秘籍(亿级数据吞吐实战经验分享)
  • 2025年AI智能体官网服务公司推荐:AI智能体官网常见问题及注册解决方案全解析 - 工业品牌热点
  • 2025广州移民服务公司TOP5权威推荐:资质合规与口碑实力双维度测评 - 工业品牌热点
  • 2026年工业集尘机品牌推荐,工业集尘机厂家哪家好 - 品牌推荐大师1
  • 详解同城小程序系统源码的高效运营管理功能
  • 粒子群优化算法(Particle Swarm Optimization, PSO)
  • 2025口碑不错的美国EB5投资移民公司TOP5权威推荐:甄选优质企业助力赴美圆梦 - mypinpai
  • 2026北京朝阳区滥用职权玩忽职守案件律所推荐指南 - 苏木2025
  • 2025年广州美国投资移民服务公司推荐:美国投资移民服务哪家可靠? - 工业推荐榜
  • Linux8平台使用dnf/yum管理软件包
  • PyTorch安装教程GPU多卡配置与TensorFlow对比
  • 2026北京昌平侵权损害法律服务机构测评:专业能力与服务质量双维度解析,靠谱律所与在线律师咨询渠道优选清单 - 苏木2025
  • 2025年美国投资移民中介推荐排行榜,新测评精选移民服务公司推荐 - myqiye
  • 2025实力强的财务审计、比较好的财务审计公司推荐 - 工业品网
  • C++26中如何通过CPU亲和性提升程序性能:90%开发者忽略的关键细节
  • 【Java微服务Serverless部署终极指南】:掌握云原生架构下的高效部署策略
  • 攻防实战:数据窃取技术详解
  • 基于TensorFlow 2.9的AI开发环境配置教程(支持GPU)
  • 2026北京昌平区靠谱金融律所口碑排名:从服务性价比到胜诉率深度解析,法律帮助精准匹配需求的机构都在这 - 苏木2025
  • 海鸥优化算法(SOA)优化BP神经网络实现分类模型
  • Typora(跨平台MarkDown编辑器) 破解版下载及安装使用教程