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

 更新时间:2021年11月22日 10:15:11   作者:令狐掌门  
如果从事过C++ Windows客户端开发,大家对MFC、Qt、DuiLib等各种DirectUI应该有了解,本篇给大家介绍一个超级轻量级的C++开源跨平台图形界面框架ImGUI,感兴趣的可以了解一下

  如果从事过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介绍小结的文章就介绍到这了,更多相关C++ ImGUI框架内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 约瑟夫环问题(数组法)c语言实现

    约瑟夫环问题(数组法)c语言实现

    这篇文章主要介绍了约瑟夫环问题(数组法)c语言实现,有需要的朋友可以参考一下
    2013-12-12
  • C语言使用ffmpeg和sdl实现多路音频播放

    C语言使用ffmpeg和sdl实现多路音频播放

    这篇文章主要为大家详细介绍了一种基于ffmpeg和sdl实现的音频多路混合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2023-06-06
  • C++标准模板库STL深入讲解

    C++标准模板库STL深入讲解

    STL提供了一组表示容器、迭代器、函数对象和算法的模板。容器是一个与数组类似的单元,可以存储若干个值。STL容器是同质的,即存储的值的类型相同:算法是完成特定任务(如对数组进行排序或在链表中查找特定值)的处方
    2022-12-12
  • C++实现LeetCode(692.前K个高频词)

    C++实现LeetCode(692.前K个高频词)

    这篇文章主要介绍了C++实现LeetCode(692.前K个高频词),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++11互斥量的具体使用

    C++11互斥量的具体使用

    互斥量是一种同步原语,是一种线程同步的手段,用来保护多线程同时访问的共享数据,本文主要介绍了C++11互斥量的具体使用,感兴趣的可以了解一下
    2023-11-11
  • Windows注册表中修改UAC(用户账号控制)及批处理脚本

    Windows注册表中修改UAC(用户账号控制)及批处理脚本

    今天小编就为大家分享一篇关于Windows注册表中修改UAC(用户账号控制)及批处理脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++ Protobuf实现接口参数自动校验详解

    C++ Protobuf实现接口参数自动校验详解

    用C++做业务发开的同学是否还在不厌其烦的编写大量if-else模块来做接口参数校验呢?今天,我们就模拟Java里面通过注解实现参数校验的方式来针对C++ protobuf接口实现一个更加方便、快捷的参数校验自动工具,希望对大家有所帮助
    2023-04-04
  • C语言实现学生奖学金评定系统

    C语言实现学生奖学金评定系统

    这篇文章主要介绍了C语言实现学生奖学金评定系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++实现拼图游戏代码(graphics图形库)

    C++实现拼图游戏代码(graphics图形库)

    这篇文章主要为大家详细介绍了C++实现拼图游戏代码,带有graphics图形库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C/CPP运算优先级的坑及解决

    C/CPP运算优先级的坑及解决

    这篇文章主要介绍了C/CPP运算优先级的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论