如果从事过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路径如下:

  sln路径:imgui/examples/imgui_examples.sln

  运行win32_dx12界面如下:

  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

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

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

技术选型

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

如何使用ImGUI

  参考imgui的示例代码,如下所示:

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输出来生成其他语言的绑定。

C++轻量级界面开发框架ImGUI介绍相关推荐

  1. 【我的渲染技术进阶之旅】关于C++轻量级界面开发框架Dear ImGui介绍

    文章目录 一.怎么知道ImGui的 1.1 Filament中有使用ImGui 1.2 其他很多渲染框架都有使用ImGui 二.ImGui介绍 2.1 ImGui风格 2.2 Imgui介绍 2.2. ...

  2. python的电脑推荐_推荐8款常用的Python GUI图形界面开发框架

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具 ...

  3. python使用界面-推荐8款常用的Python GUI图形界面开发框架

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具 ...

  4. Python 内置界面开发框架 Tkinter入门篇 丁

    如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/X5cqennLrq7i1pzBAAqQ2w 本文大概 2562 个字,阅读需花 15 分钟 ...

  5. 天猫团队开源跨平台模块化 UI 界面开发框架 Tangram

    什么是 Tangram Tangram 不仅仅是一个 Native(iOS & Android)的界面开发框架,而是从日常工作中沉淀出的一套界面解决方案,涵盖了 Native SDK.GUI操 ...

  6. 轻量级WEB服务器Nginx介绍

    轻量级WEB服务器Nginx介绍 本文目录 第1 章 Nginx 简介 ................................................................ ...

  7. python界面-推荐8款常用的Python GUI图形界面开发框架

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助,如果你有其他更好的选择,欢迎在评论区留言. Python 的 UI 开发工具 ...

  8. VMware VI4的界面和操作介绍

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.[url]http://leesun.blog.51cto.com/58664/110 ...

  9. php快速开发框架津县,BetePHP:一个轻量级快速开发框架

    BetePHP 关于 BetePHP是一个轻量级快速开发框架.框架提供了一致的API接口,使得使用接口尽可能流畅:由于框架本身不依赖其他库,这使得框架本身运行速度非常快:框架希望使用最简单的方式mak ...

最新文章

  1. ios 比 android 精致,iOS小组件对比ColorOS 11个性化,网友:这太好选了
  2. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 8 章 数据类型_8.10. 位串类型
  3. exchange揭开拨号音还原法的神秘面纱
  4. Team Up!用Visual Studio 2005 Team System组织所有的装备 --作者:Chris Menage
  5. 做产品经理的第1年、第5年和第10年...
  6. 软件测试测试用例编写 不超过7步骤_教你快速编写一个合格的测试用例!
  7. nginx安装和配置实例
  8. php ci controller,Codeigniter – CI_Controller与控制器
  9. javascript 的线程问题
  10. 【随笔篇】2019全国大学生电子设计竞赛回望与总结
  11. 图灵科普数学宝藏书单|购书狂欢618倒计时,这份书单闭眼入
  12. 5道String面试题,能全答对的人不到10%!(附答案)
  13. tms sparkle创建server以及module实例
  14. pvr格式的用什么打开_cocos2d 查看pvr图片的详细格式
  15. SAT数学:必背公式之三角函数
  16. 文件存取服务器是用的什么,什么是文件存储?
  17. 蓝牙BQB认证所需资料和流程
  18. 广义表的头尾链表存储表示(第五章 P115 算法5.5,5.6,5.8)
  19. 【Unity3D日常开发】Unity3D中设置Image中的Color的值
  20. Fiddler创建根证书不成功和无法找到根证书的解决方法

热门文章

  1. transactionTemplate???
  2. 那是计算机房吗不它不是 英语,人教版四年级下册英语unit1教材B部分课文翻译...
  3. 学成案例——banner模块和精品模块制作
  4. 上传图片回显(上传到服务器)
  5. [附源码]Python计算机毕业设计Django创意摄影交流平台
  6. 蓝海创意云丨互联网+文化创意+金融=?
  7. 双击映射坚果云网盘并打开的AHK源代码
  8. Maven配置阿里云镜像仓库地址
  9. 《python初级爬虫》(二)
  10. 虚拟机开机状态动态增加内存和CPU