Плохое качество картинки в imgui

Mr_Incognito

Активный
Автор темы
331
51
Версия MoonLoader
.026-beta
Подскажите, почему качество портится, когда картинку в имгуи выводишь? Фиксануть можно как то?

Вот наглядный пример.
Скрин из игры:
Без названия.png



Вот эта картинка
bg.png
 
Последнее редактирование:

Mr_Incognito

Активный
Автор темы
331
51
Скинь код.
Если ты изменяешь размер картинки (даже сохраняя пропорции), когда выводишь её – качество может заметно ухудшаться
Я понимаю это, но я не менял размер. У меня прописано размер окна 700*500 и картинка делалась таким же размером.
 

Mr_Incognito

Активный
Автор темы
331
51
Вот строки из кода:
bg_main = imgui.CreateTextureFromFile(getGameDirectory() .. '\\moonloader\\GHelper\\bg.jpg')

if main_window_state.v then
        local sw, sh = getScreenResolution()

        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(700, 500), imgui.Cond.FirstUseEver)

        imgui.Begin('Test', main_window_state, imgui.WindowFlags.NoResize+imgui.WindowFlags.NoScrollWithMouse+imgui.WindowFlags.NoTitleBar)
        imgui.SetCursorPos(imgui.ImVec2(0, 0))
        imgui.Image(bg_main, imgui.ImVec2(700, 500))
 

Vintik

Через тернии к звёздам
Проверенный
1,526
1,009
Никогда в жизни не практиковал такое, но попробуй
Lua:
function main()
  local sw, sh = getScreenResolution()
  texture = renderLoadTextureFromFile(getGameDirectory() .. '\\moonloader\\GHelper\\bg.jpg')
  while true do
    wait(0) -- цикл будет вызываться каждый фрейм
    renderDrawTexture(texture, sw - 700 / 2, sh - 500 / 2, 700, 500, 0, 0)
  end
end
По идее, когда запустишь игру - должна быть картинка. Но я не уверен от слова совсем.
 

Vintik

Через тернии к звёздам
Проверенный
1,526
1,009
Да, ничего не происходит. Ладно, нафиг эти костыли, буду что то думать. Или без картинки или еще что то, хз
Никогда не сдавайся! Я протестировал, 10 минут поломал голову, и нашёл решение.

Lua:
function main()
  local sw, sh = getScreenResolution()
  local texture = renderLoadTextureFromFile(getGameDirectory() .. '\\moonloader\\GHelper\\bg.jpg')
  local sizeX, sizeY = 700, 500 -- размеры изображения
  while true do
    wait(0) -- цикл будет вызываться каждый фрейм
    renderDrawTexture(texture, (sw - sizeX) / 2, (sh - sizeY) / 2, sizeX, sizeY, 0, 0xffffffff)
  end
end
Кстати, в последнем аргументе функции рендера (0xffffffff), первые две буквы отвечают за прозрачность. 00 – полностью прозрачная, ff – полностью непрозрачная. То есть, если хочешь сделать картинку насколько то прозрачной, то просто переведи число (от 0 до 255) в HEX в калькуляторе Windows. Далее замени первые две цифры (или буквы) на эти. Например, сделать полупрозрачной можно вот так:
Lua:
renderDrawTexture(texture, (sw - sizeX) / 2, (sh - sizeY) / 2, sizeX, sizeY, 0, 0x80ffffff)

P. S. качество, вроде бы, не теряется
 
Последнее редактирование: