设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间04 现在时间04 缓存数据 十七岁吻的人额头没有粉底

十七岁吻的人额头没有粉底 -- 十七岁

查看: 670|回复: 1

C++轻量级界面开发框架ImGUI介绍小结

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:230
  • 打卡月天数:0
  • 打卡总奖励:3360
  • 最近打卡:2025-04-16 04:08:46
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
402
主题
386
精华
0
金钱
4591
积分
854
注册时间
2023-1-4
最后登录
2025-5-31

发表于 2023-1-24 18:15:52 | 显示全部楼层 |阅读模式
  如果从事过C++ Windows客户端开发,大家对MFC、Qt、DuiLib等各种DirectUI应该有了解,本篇给大家介绍一个超级轻量级的C++开源跨平台图形界面框架ImGUI.

ImGUI简介

  ImGUI主要用于游戏行业,所有的控件都需要手绘实现,当然性能也是满满的,毕竟是直接用dx/opengl来实现。
ImGUI仓库:https://github.com/ocornut/imgui
  ImGUI又称为Dear ImGui,它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,也可以编译成dll, ImGUI使用DX或者OpenGL进行界面渲染,对于画面质量要求较高,例如客户端游戏,4k/8k视频播放时,用ImGUI是很好的选择,当然,你得非常熟悉DirectX或者OpenGL,不然就是宝剑在手,屠龙无力。相对于Qt、MFC、DuiLib、SOUI等,ImGUI的拓展性更好,也更轻量级,当然对于开发者的要求也更高.
  下载ImGUI代码后,用vs2019可以直接打开,编译,运行,sln路径如下:
191837jv1a9m1qroiim9rv.png

sln路径:imgui/examples/imgui_examples.sln
  运行win32_dx12界面如下:
191837o6wq86stpdzg18km.png

ImGUI没有类似于Qt/MFC这种,可以拖拽控件进行搭建界面,ImGUI的所有控件都必须手写实现。ImGUI的demo基本提供了所有控件、图表等的实现,源码也有,可以对照的学习。
关于ImGUI的详细介绍,可以参考github.
  注意这段话
This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addition to maintenance and stability there are many desirable features yet to be added. If your company is using Dear ImGui, please consider reaching out.

ImGUI的界面实现

  基本控件:label、text、checkbox、slider
191838uxc5qezlcp4c28de.png

窗体控件:树形控件、图片控件、ComboBox、列表控件、菜单栏等
191838e7gxhjh5rulwvay0.png

根据官方提供的demo来看,基本满足开发要求。

技术选型

  在PC端技术选型时,如果公司有音视频、图形图像、4k/8k视频业务,可以考虑一下使用ImGUI,毕竟是直接使用DX/OpenGL来进行绘制渲染,其它功能就直接使用C++来实现。

如何使用ImGUI

  参考imgui的示例代码,如下所示:
191838upjn878a2e7cjfpv.png

imgui github也有一些简单的介绍,可以参考,例如:集成
在大多数平台上,当使用c++时,你应该能够使用imgui_impl_xxxx后端的组合而不需要修改(例如imgui_impl_win32.cpp + imgui_impl_dx11.cpp)。如果你的引擎支持多个平台,考虑使用更多的imgui_impl_xxxx文件,而不是重写它们:这将为你减少工作,你可以让亲爱的ImGui立即运行。如果您愿意,可以稍后决定使用自定义引擎函数重写自定义后端。
将ImGui整合到你的自定义引擎中需要1)连接鼠标/键盘/手柄输入2)将纹理上传到你的GPU/渲染引擎3)提供能够绑定纹理并渲染纹理三角形的渲染功能。示例/文件夹中填充的应用程序就是这样做的。如果你是熟练掌握这些概念的资深程序员,那么将Dear ImGui集成到定制引擎中应该不需要2个小时。请务必花时间阅读FAQ、评论和一些示例/应用程序!
官方维护的后端/绑定(在存储库中):
       
  • 渲染器:DirectX9, DirectX10, DirectX11, DirectX12, Metal, OpenGL/ES/ES2, SDL_Renderer, Vulkan, WebGPU。   
  • 平台:GLFW, SDL2, Win32, Glut, OSX, Android。   
  • 框架:Emscripten, Allegro5, Marmalade。
第三方后端/绑定wiki页面:
       
  • 语言:C, c#和:Beef, ChaiScript, Crystal, D, Go, Haskell, Haxe/hxcpp, Java, JavaScript, Julia, Kotlin, Lobster, Lua, Odin, Pascal, PureBasic, Python, Ruby, Rust, Swift…   
  • 框架:AGS/Adventure Game Studio, Amethyst, Blender, bsf, Cinder, Cocos2d-x,勤奋引擎,Flexium, GML/Game Maker studi2, GLEQ, Godot, GTK3+OpenGL3, Irrlicht引擎,LÖVE+LUA, Magnum, Monogame, NanoRT, cine, niine Game Lib,任天堂3DS & Switch (homebrew), Ogre, openFrameworks, OSG/OpenSceneGraph, Orx, Photoshop, px_render, Qt/QtDirect3D,SDL_Renderer, sml, Sokol, Unity,虚幻引擎4,vtk, VulkanHpp, VulkanSceneGraph, Win32 GDI, WxWidgets。   
  • 注意,C绑定(cimgui)是自动生成的,你可以使用它的json/lua输出来生成其他语言的绑定。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
21
积分
22
注册时间
2022-12-27
最后登录
2022-12-27

发表于 7 天前 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表