Вопрос Почему при подгрузке шрифта imgui вылетает?

Начинающий
Статус
Оффлайн
Регистрация
10 Сен 2024
Сообщения
6
Реакции[?]
0
Поинты[?]
0
Пробовал подгрузить шрифт из байтов и напрямик из файла, ничего не помогает, какие могут быть варианты?

Код:
    // text
    ImFont* myFont = ImGui::GetIO().Fonts->AddFontFromFileTTF("C:/Users/monst/Downloads/Telegram Desktop/MUSEOSANS-900.TTF", 16.0f);
    if (myFont != nullptr) {
        auto image_size = ImVec2(14, 14);
        auto image_pos_min = ImVec2((header_size.x / 2) - (image_size.x - 2), (header_size.y / 2) - (image_size.y - 2));
        auto image_pos_max = ImVec2((header_size.x / 2) + (image_size.x - 2), (header_size.y / 2) + (image_size.y - 2));

        auto clr = g_cfg.misc.ui_color.base();
        auto letter = XOR("text");
        ImGui::PushFont(myFont);
        auto text_size = ImGui::CalcTextSize(letter.c_str());

        auto base_x = window_pos.x + image_pos_min.x - text_size.x + 18.f;
        list->AddText(ImVec2(base_x + 24.f, window_pos.y + 18), c_color(255, 255, 255, 150.f * alpha).as_imcolor(), letter.c_str());
        ImGui::PopFont();
    }
Пробовал юзать дефолтный шрифт, все работает
 
Начинающий
Статус
Оффлайн
Регистрация
30 Июл 2019
Сообщения
18
Реакции[?]
2
Поинты[?]
1K
Пробовал подгрузить шрифт из байтов и напрямик из файла, ничего не помогает, какие могут быть варианты?

Код:
    // text
    ImFont* myFont = ImGui::GetIO().Fonts->AddFontFromFileTTF("C:/Users/monst/Downloads/Telegram Desktop/MUSEOSANS-900.TTF", 16.0f);
    if (myFont != nullptr) {
        auto image_size = ImVec2(14, 14);
        auto image_pos_min = ImVec2((header_size.x / 2) - (image_size.x - 2), (header_size.y / 2) - (image_size.y - 2));
        auto image_pos_max = ImVec2((header_size.x / 2) + (image_size.x - 2), (header_size.y / 2) + (image_size.y - 2));

        auto clr = g_cfg.misc.ui_color.base();
        auto letter = XOR("text");
        ImGui::PushFont(myFont);
        auto text_size = ImGui::CalcTextSize(letter.c_str());

        auto base_x = window_pos.x + image_pos_min.x - text_size.x + 18.f;
        list->AddText(ImVec2(base_x + 24.f, window_pos.y + 18), c_color(255, 255, 255, 150.f * alpha).as_imcolor(), letter.c_str());
        ImGui::PopFont();
    }
Пробовал юзать дефолтный шрифт, все работает

вот моя система подгрузки шрифтов

C++:
void BuildFont(float fontSize, const std::string& fontPath, ImFont*& customfont)
{
    ImGuiIO& io = ImGui::GetIO();

   
    ImFontConfig fontConfig;
    fontConfig.GlyphRanges = io.Fonts->GetGlyphRangesCyrillic(); // Диапазон для кириллицы


    customfont = io.Fonts->AddFontFromFileTTF(fontPath.c_str(), fontSize, &fontConfig);


    if (!customfont) {
        std::cerr << "Failed to load font: " << fontPath << std::endl;
        return;
    }

    // Настраиваем параметры сглаживания
    io.Fonts->Flags |= ImFontAtlasFlags_NoPowerOfTwoHeight;
    io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines;      

    io.Fonts->Build();
}


if (reloadFont)
{

        BuildFont(80, fontfile, gui::settings::fonts::nameespfont);
   

    ImGui_ImplDX9_InvalidateDeviceObjects(); //важно
    ImGui_ImplDX9_CreateDeviceObjects(); 
    reloadFont = false;
}
   
    ImGui_ImplDX9_NewFrame();
    ImGui_ImplWin32_NewFrame();
   
    ImGui::NewFrame();
 
Сверху Снизу