ImGui字体加载问题:Build()调用后如何添加新字体?
在ImGui中高效加载/追加字体的正确方式
一次性加载多字体的正常实现
ImGui支持一次性加载10个及以上字体,可正常运行,示例代码如下:
ImGuiIO* ImGuiIO_p = &ImGui::GetIO(); (*ImGuiIO_p).Fonts->AddFontDefault(); (*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_1[0], size_Font, ImFontConfig_p, 0); (*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_2[0], size_Font, ImFontConfig_p, 0);
曾误解的繁琐实现方式
此前误以为要在Build()调用前追加新字体,必须先调用Clear()清空所有已加载字体,再重新加载原有字体并添加新字体后执行Build(),相关代码如下:
先执行清空操作:
(*ImGuiIO_p).Fonts->Clear();
再重新加载所有字体:
ImGuiIO* ImGuiIO_p = &ImGui::GetIO(); (*ImGuiIO_p).Fonts->AddFontDefault(); (*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_1[0], size_Font, ImFontConfig_p, 0); (*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_2[0], size_Font, ImFontConfig_p, 0); (*ImGuiIO_p).Fonts->AddFontFromFileTTF(&path_utf8__to_TTF_file_NEW[0], size_Font, ImFontConfig_p, 0); // 新增加载的字体 (*ImGuiIO_p).Fonts->Build();
更高效的正确追加方式
上述操作过于繁琐,经测试验证:无需清空原有字体,直接添加新字体后再次调用Build()即可完成字体追加。
内容的提问来源于stack exchange,提问作者Lua_beg
相关产品推荐
相关产品推荐

