Гайд Как использовать шрифты в ImGui

  • 140
  • 70
Контакты для связи отсутствуют.
Прошлый мой гайд не задевал создание и пуши шрифтов. Сейчас я бы хотел разобрать пару моментов.
Создавать шрифт на самом деле не обязательно, но тогда имгуи будет использовать свой указанный заранее дэфолт шрифт, который выглядит не очень.
И так.
Создание шрифта делится на 2 типа:
1.Через его название.
2.Через компрессед в байтах.

C++:
ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Arial.ttf", 14);
Первый аргумент отвечает за путь до шрифта. В этом варианте мы не указываем отдельный шрифт, а используем глобально. Второе - размер шрифта. Есть, так же и третий - FontConfig, однако не думаю, что этому стоит уделять внимание сейчас.
Мы сейчас рассмотрели вариант 1 - через его название.
Мы так же можем сделать это отдельным шрифтом -

C++:
ImGuiIO& io = ImGui::GetIO();
    ImFont* MyFont = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Arial.ttf", 14);
Для самых обычных шрифтов этот способ удобный. Однако если вы захотите использовать шрифт, которого может не быть у другого человека, это окажется не очень удобно, т.е. придется перед стартом имгуи, клиенту придётся с сервера скачать шрифт. Я предлагаю посмотреть вариант 2:
C++:
ImFont* pFont = io.Fonts->AddFontFromMemoryTTF(arrow, sizeof(arrow), 30.f);
Этот метод как я говорил, более удобный. Сначала скачайте утилиту -
GenerateCode.exe - AnonFiles
Берем файл шрифта и перетаскиваем его на программу. Получаем .h хеадер файл с компрессед шрифтом. Засоуваем его, в проект. И в аргумент 1 и 2 засоуваем название массива, который был в хеадер. Как в примере сверху.
Теперь расскажу как менять шрифт в меню во время его создания и тд.
Код:
ImGui::PushFont(myFont);
- ставит новый текущий шрифт до сих пор, пока мы не запишем ---
Код:
ImGui::PopFont();
После этого, текущий шрифт будет тот, который был до пуша (первого кода)
 
Последнее редактирование:
Сверху Снизу