70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
1

Imgui загрузка нескольких шрифтов

15.06.2023, 16:23. Показов 684. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста, как в Imgui загрузить несколько шрифтов.

Для загрузки дефолтного шрифта я использую вот такой код: часть кода условная.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Загружаю дефолтный Имгуи Шрифт
ImGuiIO& io = ImGui::GetIO();          
io.Fonts->AddFontDefault();        
io.Fonts->Build(); 
 
 
 
unsigned char* pixels = nullptr;
int width;
int height;
 
io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height, nullptr); //Получаю текстурный дефолтный атлас глифов.
 
Texture2D FontTexture = LoadTextureFrom(pixels);     //Преобразовываю текстурный атлас в реальный текстурный атлас, который уже загружается в видео-память и используется для рендера текста. (если я правильно это понимаю.)
io.Fonts->TexID = &FontTexture;     //Указываю Imgui ссылку на текстурой атлас, чтобы Имгуи передала моей функции рендера эту ссылку, когда придет время рендерить текст.

Однако, я не могу сообразить, а как два шрифта загрузить ?

Если я вызову два раза функцию AddFontFromFileTTF(), то будут загружены два атласа шлифов?

Что тогда я получу вызвав функцию io.Fonts->GetTexDataAsRGBA32() ?? Указатель на какой текстурный атлас ? Шрифта_1 или Шрифта_2 ?

Запутался вконец уже
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2023, 16:23
Ответы с готовыми решениями:

Загрузка и отображение картинки в окне Imgui
Здравствуйте! Я хочу загружать изображение в ImGui. Посмотрел вот тут как надо загружать. Так как я...

Загрузка шрифтов из ресурсов
Добрый день. В программе требуется использовать нестандартные шрифты. Храню их в ресурсе *.res....

Загрузка специфичных шрифтов
привет, добрые мои друзья! подскажите, эта директива загружает шрифт: @font-face{ ...

Быстрая загрузка шрифтов
Здравствуйте. Помогите сделать так, чтобы при загрузке сайта шрифты загружались необходимые сразу....

5
6087 / 3446 / 1401
Регистрация: 07.02.2019
Сообщений: 8,756
15.06.2023, 21:24 2
Цитата Сообщение от Optimus11 Посмотреть сообщение
Однако, я не могу сообразить, а как два шрифта загрузить ?
Сначала загрузить один, затем другой.
И только потом построить атлас и обновить текстуру!
Цитата Сообщение от Optimus11 Посмотреть сообщение
Если я вызову два раза функцию AddFontFromFileTTF(), то будут загружены два атласа шлифов?
Нет, imgui поддерживает только один атлас (если ничего не поменялось в последнее время).
Все шрифты будут в одной текстуре, поэтому особо не разгуляешся из-за ограничений на размер текстуры.
0
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
15.06.2023, 22:14  [ТС] 3
Цитата Сообщение от zayats80888 Посмотреть сообщение
Сначала загрузить один, затем другой.
И только потом построить атлас и обновить текстуру!

Нет, imgui поддерживает только один атлас (если ничего не поменялось в последнее время).
Все шрифты будут в одной текстуре, поэтому особо не разгуляешся из-за ограничений на размер текстуры.
Как я в "итоге" понял, Imgui может поддерживает хоть 10 атласов.

Изменение использование выполнятся функциями:

C++
1
2
3
4
ImGui::PushFont(chineseFont); 
ImGui::PopFont();
ImGui::PushFont(japanFont); 
ImGui::PopFont();
Нужно только правильно серверную часть настроить, что при вызовах PushFont и PopFont - правильно обновлялся указатель io.Fonts->TexID.
0
6087 / 3446 / 1401
Регистрация: 07.02.2019
Сообщений: 8,756
15.06.2023, 22:18 4
Цитата Сообщение от Optimus11 Посмотреть сообщение
Как я в "итоге" понял, Imgui может поддерживает хоть 10 атласов.
Нет, атлас только один.
Цитата Сообщение от Optimus11 Посмотреть сообщение
Изменение использование выполнятся функциями:
Это переключение шрифтов, атлас(он же текстурный атлас) не меняется.
0
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
15.06.2023, 23:05  [ТС] 5
Цитата Сообщение от zayats80888 Посмотреть сообщение
Нет, атлас только один.

Это переключение шрифтов, атлас(он же текстурный атлас) не меняется.
Если атлас один и не меняется, как происходит переключение шрифтов ?
0
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,848
16.06.2023, 11:44  [ТС] 6
Да, похоже что атлас создается один. Интересно, как Имгуи разделяет разные шрифты в этом едином атласе.
0
16.06.2023, 11:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2023, 11:44
Помогаю со студенческими работами здесь

Загрузка шрифтов в USB принтер?
Проблема: Надо подгрузить шрифты в принтер с USB портом. Обычное копирование естественно не...

Загрузка шрифтов из папки в finder
Добрый день! Возможно в xcode ли загружать шрифты не перетаскивая их в проект, а напрямую из папки...

Загрузка своих шрифтов в PascalABC.NET
есть шрифт, файлик .ttf Как этот шрифт загрузить в свою программу? Процедура может, или функция...

Локальная загрузка шрифтов, как сделать?
Всем привет. Подскажите пожалуйста, у меня в css прописан следующий код: @font-face { ...

Добавление нескольких шрифтов с правилом @font-face
Здравствуйте, форумчане! Столкнулась с проблемой подключения сторонних шрифтов в шаблон с...

Указание нескольких шрифтов в свойстве font-family
Здраствуйте. Могу ли я представить запись в таком виде: font-family:"Palatino Linotype", "Book...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru