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

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

Guardian of Order
Всефорумный модератор
4,686
5,166
дважды декодишь джейсон, еще один там где ненадо

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

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

webb_

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

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

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

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