骑着蜗牛游地球 发表于 2023-10-22 12:42:08

我们一起学习IMGUI-初识IMGUI

本帖最后由 骑着蜗牛游地球 于 2023-10-22 12:43 编辑

写之前先说一下废话,聊聊背景。了解IMGUI,说来也是缘分。那天刚认识CHATGPT,于是想调戏一下,结果就认识IMGUI。说起CHATGPT,是挺会聊的“人”,文学功底很强大,精通各国语言。说完这些,我们继续回到IMGUI。IMGUI不同于传统的界面绘制,传统的界面采用刷新机制,界面收到WM_PAINT消息后才刷新界;面而IMGUI采用的是帧绘制,即界面是一帧帧的,并不是绘制完成后永远存在,每产生一帧,界面就全部重新绘制一次。也就是界面可能第一帧是一个界面,第二帧就是另外一个界面。专业点将即使,传统界面是保留模式GUI,IMGUI是立即模式图形用户界面:       1)保留模式: 在这种模式下,用户首先创建并设置GUI小部件(如按钮、标签、滑块等),然后GUI库会处理渲染和事件。这些小部件在内存中通常会长时间存在,直到明确被销毁。       2)立即模式: 用户在每一帧中描述要显示的GUI元素,并直接获取交互反馈,比如按钮是否被点击。不存在明确的小部件对象;只是函数调用和它们的返回值。        IMGUI下载地址如下:https://github.com/ocornut/imgui。IMGUI有两个版本:Master版本和docking版本。这里推荐用docking,因为具有停靠功能,虽然可能用不到。我们下载docking版本后,目录结构如下:           IMGUI是完全开源的,对于学习开源项目,我们首先从他们的稳定或例子着手。IMGUI给我提供了非常完整的例子,例子在目录examples中。我们进入目录,打开例子,如图:      我们可以看到,例子都是基于DIRECTX或OPENGL或VULKAN等图形库的。为什么都是基于这些界面库的?难道不能独立存在么?答案是肯定的,之所以基于这些图形库,是为了方便游戏的开发(主流游戏都是基于这些图形界面库),同时也是为了避免界面闪烁。IMGUI独立存在的话,由于没有双缓冲机制,绘制的界面会闪烁(双缓冲技术、或者说是页面切换技术,是一种用于解决Win32程序中的闪烁问题的技术)。这里我们主要以WINDOW的DIRECTX为前提,来介绍IMGUI。为了兼容性,同时也为了避免教程被喷过于原始和技术过于陈旧,我们以微软的DIRECTX兼容性最好的版本DIRECT11为基础,讲解IMGUI,于是我们选择例子example_win32_directx11(注:程序最后,我们会以一个游戏为例子,游戏是一个老但是很火的游戏,而此游戏基于directx9)。运行之前,我们需要安装DIRECTX。我们去微软官网下载DirectX SDK(如果已经安装了,此步骤可以忽略,安装了VS2019或2022,部分用户会选择安装了DIRECTX,我们可以搜索D3D11.lib等类似文件,确认是否安装),DirectX SDK下载地址如下:https://www.microsoft.com/zh-CN/download/details.aspx?id=6812&wd=&eqid=a106cc8a0002d4a10000000264961093&wd=&eqid=ddbc84db0001f9770000000364b13fb9。下载完成后,右键管理员运行进行安装,安装步骤基本都是下一步,过于简单此处就不不做赘述。安装成功后(如果安装失败,我们需要把微软的Windows Update服务打开),我们便可以运行IMGUI,直接编译运行,界面如下:      到此,初始IMGUI的教程也接近尾声了,下一个教程,我们便开始学习IMGUI了,敬请期待!
参考:1)https://blog.csdn.net/yao_hou/article/details/1214430542)Mikey大神
页: [1]
查看完整版本: 我们一起学习IMGUI-初识IMGUI