火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
楼主: Xelloss0618
打印 上一主题 下一主题

[视窗] 【开源】ImGui支持库

[复制链接]

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
跳转到指定楼层
楼主
发表于 2023-6-23 10:12:34 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Xelloss0618 于 2023-6-24 20:39 编辑

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

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


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 发布正式版)


回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
沙发
 楼主| 发表于 2023-6-23 11:47:03 来自手机 | 显示全部楼层
nurjay 发表于 2023-6-23 11:34
感谢你对火山的支持
刚看了,所有控件都支持Unicode编码,不知道这些控件支不支持“从左到右”或“从右到左 ...

没看到相关选项
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
板凳
 楼主| 发表于 2023-6-23 16:12:35 | 显示全部楼层

你刚好遇到我更新文件
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
地板
 楼主| 发表于 2023-6-24 14:24:37 来自手机 | 显示全部楼层
nurjay 发表于 2023-6-24 11:26
说明上说可以支持Unicode编码,今天实测了一下,拷贝一些Unicode文字或直接用输入法输入,都无法正常显示文 ...

ImGui必须添加了指定字体,并渲染了指定范围的字形,才能显示出文字
添加自定义字形范围的功能还没封装,等下次完善
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
5#
 楼主| 发表于 2023-6-24 20:39:32 来自手机 | 显示全部楼层
06-24 更新
补全 DX12 和 Vulkan 的图片加载;
降低窗口不显示时的资源占用;
完善例程,特别是完全重写了 WTL/MFC 的例程。
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
6#
 楼主| 发表于 2023-7-7 12:50:20 来自手机 | 显示全部楼层
191376053 发表于 2023-7-7 08:28
打开所指定解决方案文件"C:%usersichenx\Desktop]ImGui\lmGui.vsIn"时发现以下错误:
模块文件"D:XHUOSHANPC ...

那个官方WTL界面的文件,可能是损坏了,用升级工具修复一下
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
7#
 楼主| 发表于 2023-8-12 21:11:12 来自手机 | 显示全部楼层
q130827 发表于 2023-8-12 18:49
怎样让创建的ImGui窗口 不停靠主窗口上 ?

现在已经可以把窗口拖出来了吧
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
8#
 楼主| 发表于 2023-9-9 14:51:51 | 显示全部楼层
1600445187 发表于 2023-9-9 14:47
大佬、绘制直线什么时候更新啊、还不能使用、

近期火山会更新一个版本支持单精度小数,到时我会跟随更新模块
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
9#
 楼主| 发表于 2023-11-23 18:45:42 | 显示全部楼层
dusk1150364 发表于 2023-11-23 09:13
这个怎么用啊,为啥没效果

ImGui 的 32 位整数颜色值,不是火山颜色类的 COLORREF,而是RGBA。
下一版我加个颜色转换吧,现在先按下面的方法写
ImGui.ImVec4到颜色值 (ImVec4.创建 (1, 0, 0, 1)) // 红色
回复

使用道具 举报

26

主题

1499

帖子

5631

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5631
10#
 楼主| 发表于 2024-4-5 23:49:05 | 显示全部楼层
f326159487 发表于 2024-4-5 22:24
能给个 绘制 图形的例子吗? IO.禁止自动合并视口 后 就看不见 绘制的线条了
...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-17 10:00 , Processed in 0.097735 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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