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

Mr_Incognito

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

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



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

Mr_Incognito

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

Mr_Incognito

Активный
Автор темы
331
50
Вот строки из кода:
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,489
953
Никогда в жизни не практиковал такое, но попробуй
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,489
953
Да, ничего не происходит. Ладно, нафиг эти костыли, буду что то думать. Или без картинки или еще что то, хз
Никогда не сдавайся! Я протестировал, 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. качество, вроде бы, не теряется
 
Последнее редактирование: