• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Русский язык в ImGui

  • Автор темы Автор темы r3z
  • Дата начала Дата начала
aka wqzxqz
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2024
Сообщения
671
Реакции
11
Хочу вывести в имгуи русский текст и вместо него - получаю вот это:

1745906715281.png


C++:
Expand Collapse Copy
#pragma once

#include "Auth.hpp"
#include "imgui.h"
#include "imgui_internal.h"
#include "imspinner.h"
#include "gui.h"

inline void pages_login() {
    static char login[64], password[64];
    
    ImGui::SetCursorPos({ ImGui::GetWindowWidth() / 2 - ImGui::GetIO().Fonts->Fonts[3]->CalcTextSizeA(ImGui::GetIO().Fonts->Fonts[3]->FontSize, FLT_MAX, -1, "Добро пожаловать в DriplessClient!").x / 2, 140 });

    ImGui::BeginGroup();
    {
        ImGui::GetWindowDrawList()->AddText(ImGui::GetIO().Fonts->Fonts[3], ImGui::GetIO().Fonts->Fonts[3]->FontSize,
            ImGui::GetCurrentWindow()->DC.CursorPos,
            ImGui::GetColorU32(ImGuiCol_SchemeLight), "Добро пожаловать");
        
        ImGui::GetWindowDrawList()->AddText(ImGui::GetIO().Fonts->Fonts[3], ImGui::GetIO().Fonts->Fonts[3]->FontSize,
            { ImGui::GetCurrentWindow()->DC.CursorPos.x + ImGui::GetIO().Fonts->Fonts[3]->CalcTextSizeA(ImGui::GetIO().Fonts->Fonts[3]->FontSize, FLT_MAX, -1, "Добро пожаловать ").x,
            ImGui::GetCurrentWindow()->DC.CursorPos.y },
            ImGui::GetColorU32(ImGuiCol_Text), "в DriplessClient!");
        
        ImGui::SetCursorPosY(200);
        
        float inputWidth = ImGui::GetWindowWidth() * 0.6f;
        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
        
        ImGui::InputTextEx("##LOGIN", "LOGIN", login, sizeof(login),
            { inputWidth, ImGui::GetFrameHeight() }, 0, 0, 0, "C");
        
        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
        ImGui::InputTextEx("##PASSWORD", "PASSWORD", password, sizeof(password),
            { inputWidth, ImGui::GetFrameHeight() }, ImGuiInputTextFlags_Password, 0, 0, "D");

        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
        if (ImGui::Button("Continue", { inputWidth, ImGui::GetFrameHeight() * 1.2f })) {
            g_login = login;
            g_password = password;

            ui::content_anim_dest = 0.f;
            ui::next_page++;
        }
    }
    ImGui::EndGroup();
}

Как я могу правильно выводить текст? (такая проблема еще в полях ввода)
 
/utf-8 крашит нахуй из-за уже существующих русских символов, жалуется на байты символов или чет такое
действительно, это ведь не разные типы данных юникод и многобайтовая строка
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Хочу вывести в имгуи русский текст и вместо него - получаю вот это:

Посмотреть вложение 304860

C++:
Expand Collapse Copy
#pragma once

#include "Auth.hpp"
#include "imgui.h"
#include "imgui_internal.h"
#include "imspinner.h"
#include "gui.h"

inline void pages_login() {
    static char login[64], password[64];
   
    ImGui::SetCursorPos({ ImGui::GetWindowWidth() / 2 - ImGui::GetIO().Fonts->Fonts[3]->CalcTextSizeA(ImGui::GetIO().Fonts->Fonts[3]->FontSize, FLT_MAX, -1, "Добро пожаловать в DriplessClient!").x / 2, 140 });

    ImGui::BeginGroup();
    {
        ImGui::GetWindowDrawList()->AddText(ImGui::GetIO().Fonts->Fonts[3], ImGui::GetIO().Fonts->Fonts[3]->FontSize,
            ImGui::GetCurrentWindow()->DC.CursorPos,
            ImGui::GetColorU32(ImGuiCol_SchemeLight), "Добро пожаловать");
       
        ImGui::GetWindowDrawList()->AddText(ImGui::GetIO().Fonts->Fonts[3], ImGui::GetIO().Fonts->Fonts[3]->FontSize,
            { ImGui::GetCurrentWindow()->DC.CursorPos.x + ImGui::GetIO().Fonts->Fonts[3]->CalcTextSizeA(ImGui::GetIO().Fonts->Fonts[3]->FontSize, FLT_MAX, -1, "Добро пожаловать ").x,
            ImGui::GetCurrentWindow()->DC.CursorPos.y },
            ImGui::GetColorU32(ImGuiCol_Text), "в DriplessClient!");
       
        ImGui::SetCursorPosY(200);
       
        float inputWidth = ImGui::GetWindowWidth() * 0.6f;
        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
       
        ImGui::InputTextEx("##LOGIN", "LOGIN", login, sizeof(login),
            { inputWidth, ImGui::GetFrameHeight() }, 0, 0, 0, "C");
       
        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
        ImGui::InputTextEx("##PASSWORD", "PASSWORD", password, sizeof(password),
            { inputWidth, ImGui::GetFrameHeight() }, ImGuiInputTextFlags_Password, 0, 0, "D");

        ImGui::SetCursorPosX((ImGui::GetWindowWidth() - inputWidth) / 2);
        if (ImGui::Button("Continue", { inputWidth, ImGui::GetFrameHeight() * 1.2f })) {
            g_login = login;
            g_password = password;

            ui::content_anim_dest = 0.f;
            ui::next_page++;
        }
    }
    ImGui::EndGroup();
}

Как я могу правильно выводить текст? (такая проблема еще в полях ввода)
1745930525222.png

сохрани файл в котором у тебя русский язык в utf-8 и добавь шрифт с поддежкой кирилики, и укажи glyph range cyrillic
 
Назад
Сверху Снизу