ImGui 如何降低运行时内存占用

ImGui运行时,如果使用了中文,内存占用将达到上百兆,那么如何减少在windows系统上运行时体积呢。

原因是:ImGui 将字体字形预先渲染到一个或多个纹理图集上,如果你的中文字体比较齐全,那么占用的内存就小不了。

优化思路:在windows环境下,使用操作系统原生文本渲染API (DirectWrite)对文字进行渲染,其他环境依然沿用原来的渲染方式。


由于我需要去除ImGui运行时的背景窗口,所以fork了原工程的Docking分支,你可以按照思路,修改其他分支。

工程地址:https://github.com/ShengYongKang/imgui/tree/docking

同时依赖项需要包括这几个静态库

dwrite.lib;d2d1.lib;

d3d11.lib;dxgi.lib (这两个ImGui应该已经包含过了)

具体添加方法:属性  -->连接器 -->附加依赖项

[C/C++]imGui_如何去掉背后窗口与CMD黑窗

使用imGui框架时,如何去掉背后的窗口,如何隐藏exe运行时背后的渲染窗口,与cmd黑框窗口。

首先,你需要切换到ImGui的docking分支:

https://github.com/ocornut/imgui/tree/docking


一、隐藏渲染窗口

找到代码里的

::ShowWindow(hwnd, SW_SHOWDEFAULT);

改成

::ShowWindow(hwnd,SW_HIDE);

如果你想隐藏窗口,但又希望任务栏可以显示图标,可以改成

::ShowWindow(hwnd,WS_VISIBLE);


二、去除Console窗口黑框(CMD窗口)//windows平台

方法:在main.cpp头文件引用处添加:

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")

位置写在头文件最后即可

最终效果如图:

我修改了描述和样式,如果你没修改,应该是黑色的
此方法可以隐藏黑框,并且可以隐藏任务管理器内的控制台进程。

以上是教程的全部内容。
退出移动版