递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 15534|回复: 51
打印 上一主题 下一主题

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

[复制链接]

26

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6924
跳转到指定楼层
楼主
发表于 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

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6924
52#
 楼主| 发表于 2024-4-5 23:49:05 | 只看该作者
f326159487 发表于 2024-4-5 22:24
能给个 绘制 图形的例子吗? IO.禁止自动合并视口 后 就看不见 绘制的线条了
...

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

使用道具 举报

0

主题

2

帖子

28

积分

新手上路

Rank: 1

积分
28
51#
发表于 2024-4-5 22:24:40 | 只看该作者
本帖最后由 f326159487 于 2024-4-5 22:37 编辑
Xelloss0618 发表于 2023-11-23 18:45
ImGui 的 32 位整数颜色值,不是火山颜色类的 COLORREF,而是RGBA。
下一版我加个颜色转换吧,现在先按下 ...

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

使用道具 举报

26

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6924
50#
 楼主| 发表于 2023-11-23 18:45:42 | 只看该作者
dusk1150364 发表于 2023-11-23 09:13
这个怎么用啊,为啥没效果

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

使用道具 举报

0

主题

10

帖子

107

积分

注册会员

Rank: 2

积分
107
49#
发表于 2023-11-23 09:13:12 | 只看该作者
  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绘制标志.无)
复制代码

这个怎么用啊,为啥没效果
回复

使用道具 举报

7

主题

54

帖子

439

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
439
48#
发表于 2023-9-9 14:54:49 | 只看该作者
Xelloss0618 发表于 2023-9-9 14:51
近期火山会更新一个版本支持单精度小数,到时我会跟随更新模块

好的、感谢大佬!!!
回复

使用道具 举报

26

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6924
47#
 楼主| 发表于 2023-9-9 14:51:51 | 只看该作者
1600445187 发表于 2023-9-9 14:47
大佬、绘制直线什么时候更新啊、还不能使用、

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

使用道具 举报

7

主题

54

帖子

439

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
439
46#
发表于 2023-9-9 14:47:09 | 只看该作者
大佬、绘制直线什么时候更新啊、还不能使用、
回复

使用道具 举报

6

主题

26

帖子

168

积分

注册会员

Rank: 2

积分
168
45#
发表于 2023-8-13 16:59:08 | 只看该作者
Xelloss0618 发表于 2023-8-12 21:11
现在已经可以把窗口拖出来了吧

请问 在主主界面范围内 也不停靠有办法吗?  
回复

使用道具 举报

26

主题

1900

帖子

6924

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6924
44#
 楼主| 发表于 2023-8-12 21:11:12 来自手机 | 只看该作者
q130827 发表于 2023-8-12 18:49
怎样让创建的ImGui窗口 不停靠主窗口上 ?

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 23:22 , Processed in 0.087378 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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