Гайд [mimgui] Храним картинки в памяти

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,400
Всем хай. Так как недавно @FYP залил таки mimgui в репозиторий, пришло время его осваивать!

Теперь необязательно таскать кучу картинок за файлом, достаточно перевести картинку в base85 данные. Для этого нам понадобится файл прикрепленный ниже.

Использование:
1. Создаем папку img на рабочем столе (для удобства)
2. Помещаем файл b2c_lua.exe в эту папку
3. Открываем командную строку (не от имени админа)
4. Открываем папку img в командной строке: cd Desktop/img
5. Пишем следующее: b2c_lua -nocompress имя_файла переменная > выходящий_файл
Пример: b2c_lua -nocompress exit.png exit > exit.lua
Теперь код нашей картинки находится в переменной exit_data в файле exit.lua, рядом с картинкой.
6. Копируем весь файл и вставляем в ваш код. Для удобства я поместил код картинки в конец скрипта, обязательно уберите "local" у exit_data, если помещаете в конец файла (переменная должна быть глобальной).
7. При инициализации создаем картинку:
Lua:
local imgExit = nil
imgui.OnInitialize(function()
    imgExit = imgui.CreateTextureFromFileInMemory(imgui.new('const char*', exit_data), #exit_data)
end)
8. Вы великолепны

Теперь imgExit можно использовать как обычное изображение

Для создания множества изображений используйте единый файл картинок и показывайте его частями (у imgui.Image есть параметры отвечающие за то, какую часть изображения показывать). Это больше гемора, но так делают все тру программисты
 

Вложения

  • b2c_lua.exe
    158.5 KB · Просмотры: 791
Последнее редактирование:

madrasso

Потрачен
883
325
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я один до сих пор не понимаю что за mimgui?
 

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,400
Нигде. Распространяется строго через менеджер зависимостей.
require lib.deps {
'fyp:mimgui'
}

@imring mimgui это не moon imgui,
mimgui это не обновление, а полностью другой билдинг, с значительными отличиями. mimgui расшифровывается как moonloaderimgui, но называется именно mimgui.
 

madrasso

Потрачен
883
325
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нигде. Распространяется строго через менеджер зависимостей.
require lib.deps {
'fyp:mimgui'
}

@imring mimgui это не moon imgui,
mimgui это не обновление, а полностью другой билдинг, с значительными отличиями. mimgui расшифровывается как moonloaderimgui, но называется именно mimgui.
Что за отличия?
 

Шурик

Активный
216
43
Инструкция со шрифтом:
1. Создаем папку fonts на рабочем столе (для удобства)
2. Помещаем файл b2c_lua.exe в эту папку
3. Открываем командную строку (не от имени админа)
4. Открываем папку fonts в командной строке: cd Desktop/fonts
5. Пишем следующее: b2c_lua -base85 имя_файла переменная > выходящий_файл
Пример: b2c_lua -base85 test.ttf result > test.lua
Теперь код нашего шрифта находится в переменной result_compressed_data_base85 в файле test.lua, рядом со шрифтом.
6. Копируем весь файл и вставляем в ваш код.
7. При инициализации создаем шрифт:

Lua:
imgui.OnInitialize(function()
    imgui.GetIO().Fonts:Clear()
    -- local result_compressed_data_base85 .... <--- ВАША ПЕРЕМЕННАЯ, КОТОРАЯ БЫЛА В ФАЙЛЕ test.lua
    local builder = imgui.GlyphRangesBuilder()
    builder:AddRanges(imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
    builder:AddText([[‚„…†‡€‰‹‘’“”•–—™›№]])
    local range = imgui.ImVector_ImWchar()
    builder:BuildRanges(range)
    imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(result_compressed_data_base85, 14.0, nil, range[0].Data)
end)
8. Хомяк великолепен
9. Осваивать mimgui
 

Quasper

Известный
835
354
Чуваки, а как можно рендерить этим методом только обычным рендером(не имгуи)?
 

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,400

SKIC

Известный
64
0

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,400
Было бы ещё хорошо если бы можно было определёный кусок рендерить без мимгуи.
это уже не ко мне, не уверен что в дефолт рендере есть заготовленная функция. Пробуй кастомизировать
 

SKIC

Известный
64
0
это уже не ко мне, не уверен что в дефолт рендере есть заготовленная функция. Пробуй кастомизировать
Ну я так и думал, раз нельзя то как рендерить символ в мимгуи? Ну то есть есть ttf а я хочу просто символ рендерить один.