Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

ImGUI Кириллица

  • Автор темы Автор темы 364847
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
6 Авг 2017
Сообщения
81
Реакции
44
Собственно, решил переделать спектатор лист в индиго и сделать его в виде отдельного ImGUI окошка. Сделать то сделал, все работает, вот только русские символы отображаются в виде вопросительных знаков. Как я понял, нужно, чтобы кодировка была UTF-8, но как реализовать перекодировку значения из переменной? Т. е. я знаю, что можно, например, вывести русский текст вот так ImGui::Text(u8"Привет"), но в моем ведь случае ники берутся из переменной ImGui::Text("%s", Pinfo.m_szPlayerName); как в таком случае решить проблему с кириллицей?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ImGui::Text("%s", u8 & Pinfo.m_szPlayerName);
Мб прокатит :roflanBuldiga:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в GUI_Init
Код:
Expand Collapse Copy
    ImFontConfig font_config;
    font_config.OversampleH = 1; //or 2 is the same
    font_config.OversampleV = 1;
    font_config.PixelSnapH = 1;

    static const ImWchar ranges[] =
    {
        0x0020, 0x00FF, // Basic Latin + Latin Supplement
        0x0400, 0x044F, // Cyrillic
        0,
    };
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Tahoma.ttf", 14.0f, &font_config, ranges);

    ImGui_ImplDX9_Init( G::Window, pDevice );

    color();

    G::d3dinit = true;
ImGui::Text(u8"Русский текст");
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в GUI_Init
Код:
Expand Collapse Copy
    ImFontConfig font_config;
    font_config.OversampleH = 1; //or 2 is the same
    font_config.OversampleV = 1;
    font_config.PixelSnapH = 1;

    static const ImWchar ranges[] =
    {
        0x0020, 0x00FF, // Basic Latin + Latin Supplement
        0x0400, 0x044F, // Cyrillic
        0,
    };
    ImGuiIO& io = ImGui::GetIO();
    io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\Tahoma.ttf", 14.0f, &font_config, ranges);

    ImGui_ImplDX9_Init( G::Window, pDevice );

    color();

    G::d3dinit = true;
ImGui::Text(u8"Русский текст");
ты тему вообще читал?
 
Проблема решена: если печатать тахомой с теми настройками, что скинули выше, то кириллица отображается нормально. Т. е. добавляем эту тахому и переключаемся на нее перед печатью спектатор листа, а потом обратно на наш шрифт.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ImGui::Text("u8%s", &Pinfo.m_szPlayerName); Так можно
 
Назад
Сверху Снизу