递归火山软件开发平台

标题: 【开源】ImGui支持库 [打印本页]

作者: Xelloss0618    时间: 2023-6-23 10:12
标题: 【开源】ImGui支持库
本帖最后由 Xelloss0618 于 2023-6-24 20:39 编辑

这应该是火山第一个免费开源的 Dear ImGui 支持库,之前有人问了我很多 ImGui 封装的相关技术问题,就顺手开坑了。
之前应该有人封装过未公开、未开源或收费的火山 ImGui,这种火山库我基本没有接触,易语言版也没什么好参考的,所以这个 ImGui 的封装方式就全凭我自己的喜好了。
目前公开的预览版 ,已经搭好了基本框架,如果你们觉得有问题请尽快反馈,以后定型了就不好改了。

下载:
集成在最新版的 PIV 模块中,推荐用「火山平台升级工具」更新安装。
网盘:https://saier.lanzoul.com/b016cwvle

(, 下载次数: 68)
06-24 更新:补全 DX12 和 Vulkan 的图片加载;降低窗口不显示时的资源占用;完善例程,特别是完全重写了 WTL/MFC 的例程。

ImGui  支持库简介:

1. 支持 Win32、GLFW 和 SDL2 三种窗口框架,支持 OpenGL、Vulkan、DirectX 9 到 12 的图形接口,你可以选择其中特定的组合来创建 ImGui 窗口。
2. 可以基于火山的 MFC 和 WTL 界面类创建 ImGui 窗口(请参考例程里的模板)。
3. ImGui 的内部文本编码是 UTF-8,所以我将 ImGui 绝大部分方法的文本参数封装成通用型,允许使用多种文本类型(文本型、字节集类和 PIV 模块里的其他文本类型)。
   由于 ImGui 每一帧都要重新渲染,默认每秒要执行 60 次界面布局,因此我推荐使用 PIV 模块里的「标准文本类U」,可以避免文本编码转换。
4. DirectX 推荐使用 11 版(兼容 Windows 7 及之后的系统);特别不推荐 DirectX 9,因为它比较老了,而且有些功能需要安装旧版 DirectX SDK。
5. DirectX 12 和 Vulkan 的图形 API 都更接近硬件底层,内部实现代码写得又臭又长,不好修改,非必要别用。

附加 DLL 情况:
1. Dear ImGui 本体是从源码编译,无需外部 lib 和 dll。
2. 窗口框架 GLFW 和 SDL2 默认使用静态库,如果你把“火山模块的链接方式”改成动态链接,它也会附带 dll。
3. DirectX 是系统自带或另外安装,一般不需要程序附带 dll。
4. OpenGL 链接器从 Windows 95 开始就是系统自带,不需要程序附带 dll。
5. Vulkan 必须依赖 vulkan-1.dll,由于 Vulkan 比较新,Windows 7 及之前的系统肯定是没有的,Windows 10 之后能在 System32 里找到这个文件,但我不确定这是系统自带还是显卡驱动安装进去的。总之程序默认附带这个 dll,你可以看情况选择是否将它打包发布。

未来更新:
1. 补完部分未封装的功能
2. 补完中文常量名和备注
3. 更多的例子
4. 更多的第三方 ImGui 扩展
5. 增加 SDL 3.0 后端的支持(需要等 SDL 3.0 发布正式版)



作者: suyan    时间: 2023-6-23 10:19
6666
作者: 大有可为    时间: 2023-6-23 10:21
前排支持
作者: shuimiao    时间: 2023-6-23 10:24
牛逼,支持大佬
作者: amwji    时间: 2023-6-23 11:28
来下载大佬的神作,漂亮
作者: nurjay    时间: 2023-6-23 11:34
感谢你对火山的支持
刚看了,所有控件都支持Unicode编码,不知道这些控件支不支持“从左到右”或“从右到左”的书写方式
作者: xucy    时间: 2023-6-23 11:41
牛逼,支持大佬:噜阿噜
作者: server    时间: 2023-6-23 11:42
厉害!!
作者: 诗木    时间: 2023-6-23 11:46
前排感谢大佬
作者: Xelloss0618    时间: 2023-6-23 11:47
nurjay 发表于 2023-6-23 11:34
感谢你对火山的支持
刚看了,所有控件都支持Unicode编码,不知道这些控件支不支持“从左到右”或“从右到左 ...

没看到相关选项
作者: gzylove    时间: 2023-6-23 12:18
感谢大佬
作者: itismine    时间: 2023-6-23 12:42
学习一下 。
作者: st8051    时间: 2023-6-23 14:16
66666666666  支持
作者: Inverse    时间: 2023-6-23 14:38
感谢大佬做出的贡献
作者: a524666979    时间: 2023-6-23 14:46
非常感谢
作者: 小蜗牛    时间: 2023-6-23 15:03
666
作者: Q624353765    时间: 2023-6-23 15:05
卖给官方
作者: uuyyhhjj    时间: 2023-6-23 15:55
强,学习学习
作者: hcwanz    时间: 2023-6-23 15:57
本帖最后由 hcwanz 于 2023-6-23 16:01 编辑

来晚了... (, 下载次数: 36)

作者: Xelloss0618    时间: 2023-6-23 16:12
hcwanz 发表于 2023-6-23 15:57
来晚了...

你刚好遇到我更新文件
作者: fengyishen    时间: 2023-6-23 16:22
大佬这么猛,头发掉了几斤??
作者: 白雪皑皑0306    时间: 2023-6-23 17:31
顶个顶个,期待完善
作者: 山梦    时间: 2023-6-23 18:29
厉害厉害。膜拜大佬
作者: shuimiao    时间: 2023-6-23 19:42
fengyishen 发表于 2023-6-23 16:22
大佬这么猛,头发掉了几斤??

有的大佬脑容量大,打字敏捷,知识储备足够,同样的工作量,只用了别人十分之一的时间和精力。
作者: howill2021    时间: 2023-6-23 21:39
虽然不知道干嘛的,但是必须支持一波
作者: 步天有术22    时间: 2023-6-24 07:55

作者: tmf19901124    时间: 2023-6-24 08:01
挂佬有福了
作者: htpmcj    时间: 2023-6-24 08:45
666
作者: zzr1122333    时间: 2023-6-24 10:03
666666666666
作者: nurjay    时间: 2023-6-24 11:26
说明上说可以支持Unicode编码,今天实测了一下,拷贝一些Unicode文字或直接用输入法输入,都无法正常显示文字,都是问号(?)
这个怎么解决啊!!!
作者: Xelloss0618    时间: 2023-6-24 14:24
nurjay 发表于 2023-6-24 11:26
说明上说可以支持Unicode编码,今天实测了一下,拷贝一些Unicode文字或直接用输入法输入,都无法正常显示文 ...

ImGui必须添加了指定字体,并渲染了指定范围的字形,才能显示出文字
添加自定义字形范围的功能还没封装,等下次完善
作者: Xelloss0618    时间: 2023-6-24 20:39
06-24 更新
补全 DX12 和 Vulkan 的图片加载;
降低窗口不显示时的资源占用;
完善例程,特别是完全重写了 WTL/MFC 的例程。

作者: wxmthh    时间: 2023-6-24 20:55
厉害了,大佬,膜拜!
作者: pkwwfpkwwf    时间: 2023-6-28 16:19
666
作者: 191376053    时间: 2023-7-7 08:12
在线安装了提示不存在模块怎么办[attach]22593[/attach]
作者: 191376053    时间: 2023-7-7 08:28
打开所指定解决方案文件"C:\Usersichenx\Desktop]ImGui\lmGui.vsIn"时发现以下错误:
模块文件"D:XHUOSHANPC\win_android_chs_freelpluginsivprj_win\classlibisys\wtl_ui_base\wtl_ui_base.vgrp"不存在或载入失败
各给兄弟们这个怎么搞啊
模块我也用火山在线升级平台安装了PIV
作者: 高山!&流水    时间: 2023-7-7 09:26
大佬666,可以卖给火山了
作者: Xelloss0618    时间: 2023-7-7 12:50
191376053 发表于 2023-7-7 08:28
打开所指定解决方案文件"C:%usersichenx\Desktop]ImGui\lmGui.vsIn"时发现以下错误:
模块文件"D:XHUOSHANPC ...

那个官方WTL界面的文件,可能是损坏了,用升级工具修复一下
作者: zhizizhis    时间: 2023-8-8 11:40
膜拜大佬精神 想问一下如果注入游戏绘制 用哪个比较好
作者: Inverse    时间: 2023-8-8 15:43
191376053 发表于 2023-7-7 08:28
打开所指定解决方案文件"C:%usersichenx\Desktop]ImGui\lmGui.vsIn"时发现以下错误:
模块文件"D:XHUOSHANPC ...

你这是用了OCR文字识别 复制过来的报错信息吗
作者: Inverse    时间: 2023-8-8 17:46
本帖最后由 Inverse 于 2023-8-8 17:49 编辑

大佬 用你提供的例子(4个例子都一样)编译运行后 感觉界面字体模糊 费眼睛呀 要怎么解决

win11  3k高分屏




作者: Inverse    时间: 2023-8-10 00:20
Inverse 发表于 2023-8-8 17:46
大佬 用你提供的例子(4个例子都一样)编译运行后 感觉界面字体模糊 费眼睛呀 要怎 ...

@Xelloss0618
作者: q130827    时间: 2023-8-12 18:49
怎样让创建的ImGui窗口 不停靠主窗口上 ?
作者: Xelloss0618    时间: 2023-8-12 21:11
q130827 发表于 2023-8-12 18:49
怎样让创建的ImGui窗口 不停靠主窗口上 ?

现在已经可以把窗口拖出来了吧
作者: q130827    时间: 2023-8-13 16:59
Xelloss0618 发表于 2023-8-12 21:11
现在已经可以把窗口拖出来了吧

请问 在主主界面范围内 也不停靠有办法吗?  
作者: 1600445187    时间: 2023-9-9 14:47
大佬、绘制直线什么时候更新啊、还不能使用、
作者: Xelloss0618    时间: 2023-9-9 14:51
1600445187 发表于 2023-9-9 14:47
大佬、绘制直线什么时候更新啊、还不能使用、

近期火山会更新一个版本支持单精度小数,到时我会跟随更新模块
作者: 1600445187    时间: 2023-9-9 14:54
Xelloss0618 发表于 2023-9-9 14:51
近期火山会更新一个版本支持单精度小数,到时我会跟随更新模块

好的、感谢大佬!!!
作者: dusk1150364    时间: 2023-11-23 09:13
  1. <火山程序 类型 = "通常" 版本 = 1 />
  2. ImGui.取前景绘制列表 ().添加直线 (ImVec2.创建 (100, 100), ImVec2.创建 (300, 300), 颜色类.红色, 5)
  3. ImGui.取前景绘制列表 ().添加矩形填充 (ImVec2.创建 (100, 100), ImVec2.创建 (300, 300), 颜色类.红色, 0.3, IM绘制标志.无)
  4. ImGui.取背景绘制列表 ().添加直线 (ImVec2.创建 (100, 100), ImVec2.创建 (300, 300), 颜色类.红色, 5)
  5. ImGui.取背景绘制列表 ().添加矩形填充 (ImVec2.创建 (100, 100), ImVec2.创建 (300, 300), 颜色类.红色, 0.3, IM绘制标志.无)
复制代码

这个怎么用啊,为啥没效果
作者: Xelloss0618    时间: 2023-11-23 18:45
dusk1150364 发表于 2023-11-23 09:13
这个怎么用啊,为啥没效果

ImGui 的 32 位整数颜色值,不是火山颜色类的 COLORREF,而是RGBA。
下一版我加个颜色转换吧,现在先按下面的方法写
ImGui.ImVec4到颜色值 (ImVec4.创建 (1, 0, 0, 1)) // 红色
作者: f326159487    时间: 2024-4-5 22:24
本帖最后由 f326159487 于 2024-4-5 22:37 编辑
Xelloss0618 发表于 2023-11-23 18:45
ImGui 的 32 位整数颜色值,不是火山颜色类的 COLORREF,而是RGBA。
下一版我加个颜色转换吧,现在先按下 ...

能给个 绘制 图形的例子吗? IO.禁止自动合并视口 后 就看不见 绘制的线条了

作者: Xelloss0618    时间: 2024-4-5 23:49
f326159487 发表于 2024-4-5 22:24
能给个 绘制 图形的例子吗? IO.禁止自动合并视口 后 就看不见 绘制的线条了
...

隐藏主窗口后,「背景绘制列表」的图形应该是看不见的,可以用「前景绘制列表」或「窗口绘制列表」绘制。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4