Падение ФПС в имгуй окне, в добавок помогает цикл

webb_

Участник
Автор темы
50
4
Версия MoonLoader
.026-beta
Привет, столкнулся с такой проблемой что при открытии любого окна имгуй фпс падает (незначительно), однако если же вставить бесконечный цикл с массивом где может быть более 100 элементов, то фпс опускается до дна и начинается слайд-шоу.

Есть ли способы/методы как минимализировать падение ФПС, я понимаю шо имгуй сам по себе жрёт но когда цикл...

code:
if not menu.automatic.v and not menu.binds.v and not menu.overlay.v and menu.binder.v and not menu.information.v and not menu.editor.v then
            imgui.Text("Меню кастомного биндера на клавиши / команды (крайне не рекомендую вручную изменять .ini файл)")
            imgui.PushFont(imfonts.smainFont2)
            if imgui.Button("Добавить бинд", imgui.ImVec2(170.0, 23.0)) then
                table.insert(binder_ini.list, encodeJson({
                    name   = "Новый бинд",
                    msg    = {},
                    cmd    = "",
                    hotkey = "0",
                    fast   = false
                }))
                inicfg.save(binder_ini, binds)
            end
            imgui.SameLine()
            if imgui.Button("Настройка текстовых переменных", imgui.ImVec2(250.0, 23.0)) then
                menu.variables.v = true
            end
            imgui.BeginChild('binds', imgui.ImVec2(1185, 429), true)
            for k, v in ipairs(binder_ini.list) do
                imgui.PushID(k)
                if decodeJson(v) ~= nil then
                    v = decodeJson(v)
                    local cmd = imgui.ImBuffer(v.cmd, 256)
                    imgui.Button(tostring(k), imgui.ImVec2(50.0, 23.0))
                    imgui.SameLine()
                    imgui.Button(v.name, imgui.ImVec2(350.0, 23.0))
                    if imgui.IsItemClicked() then
                        currentBind   = k
                        menu.editor.v = true
                    end
                    imgui.SameLine()
                    imgui.binderHotkey(k, k, 23)
                    imgui.SameLine()
                    imgui.PushItemWidth(125)
                    imgui.InputText('##bindсommand', cmd)
                    if not cmd.v:match("srp") then
                        v.cmd = cmd.v
                        binder_ini.list[k] = encodeJson(v)
                        inicfg.save(binder_ini, binds)
                    end
                    imgui.PopItemWidth()
                    imgui.PushFont(imfonts.mainFont)
                    if imgui.IsItemHovered() then
                        imgui.BeginTooltip()
                        imgui.TextUnformatted('Команду вводить без "/"')
                        imgui.TextUnformatted('Для работы бинда достаточно либо клавиши либо команды, но также можно и то и другое')
                        imgui.EndTooltip()
                    end
                    imgui.PopFont()
                    imgui.SameLine()
                    if imgui.CustomButton("Удалить", imgui.ImVec4(0.48, 0.16, 0.16, 0.54), imgui.ImVec4(0.98, 0.43, 0.26, 0.67), imgui.ImVec4(0.98, 0.43, 0.26, 0.40)) then
                        table.remove(binder_ini.list, k)
                        inicfg.save(binder_ini, binds)
                    end
                    imgui.SameLine()
                    local bool = v.fast and imgui.ImBool(true) or imgui.ImBool(false)
                    if imgui.Checkbox("- быстрое меню", bool) then
                        v.fast = bool.v
                        binder_ini.list[k] = encodeJson(v)
                        inicfg.save(binder_ini, binds)
                    end
                end
                imgui.PopID()
            end
            imgui.EndChild()
            imgui.PopFont()
        end
 
  • Эм
Реакции: qdIbp
Решение
дважды декодишь джейсон, еще один там где ненадо

срешь выделением памяти в цикле каждый кадр

сохраняешь конфиг каждый кадр пушто не проверяшь инпат на изменение

AnWu

https://t.me/anwublog
Всефорумный модератор
4,761
5,368
дважды декодишь джейсон, еще один там где ненадо

срешь выделением памяти в цикле каждый кадр

сохраняешь конфиг каждый кадр пушто не проверяшь инпат на изменение
 
  • Нравится
Реакции: whyega52 и Farid Code

webb_

Участник
Автор темы
50
4
дважды декодишь джейсон, еще один там где ненадо

срешь выделением памяти в цикле каждый кадр

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

ты как писал это?
ногами что-ли или по гайду "master lua228"
на коленке всё делал, а щас исправляю
 
Последнее редактирование: