Созданные ответы форума
-
АвторСообщения
-
Heisenberg, собственно проблему я решил иначе. Раньше я рендерил image sequence в .png, а теперь в .jpeg. Вес уменьшился в 10 раз (раньше каждая по ~700-800 весила, теперь ~70-80).
В общем большое спасибо за помощь, потом, возможно, попробую с потоками.
Есть еще один вопрос. Как можно ускорить ваш код, Heisenberg?
Имеется всего 155 картинок с анимацией, но уж больно долго они подгружаются. Может конечно потому что внутри конструктора, а не чисто в DrawMenu. Есть идеи по ускорению загрузки? Может быть попробовать несколько потоков?Большое спасибо, Heisenberg!
Как я сделал сейчас:
C++12345678910111213141516171819202122//получаем директорию, в которой находится .exe и прибавляем нужные файлы/папкиstring szDirFile(string filename){string sExePath = cExePath;return sExePath + filename;}//преобразовываем int в string с помощью stringstream//и возвращаем название нужного файлаstring szGetImg(int num){stringstream ssNum; ssNum << num;string sNum; ssNum >> sNum;if(num <= 9)return (szDirFile("img/menu_idle/test00000") + sNum + ".png");else if(num > 9 && num < 100)return szDirFile("img/menu_idle/test0000") + sNum + ".png";elsereturn szDirFile("img/menu_idle/test000") + sNum + ".png";}А это код отрисовки:
C++12345678910111213141516171819void menu(RenderWindow & window) {int iFrame = 0;while(isMenu){window.clear(Color(129, 181, 221));Texture menuBackground;menuBackground.loadFromFile(szGetImg(iFrame));Sprite menuBg(menuBackground);window.draw(menuBg);window.display();if(iFrame < 71)iFrame++;elseiFrame = 0;}}Но загружать каждый раз изображение как-то не очень, ведь я прав? Нужно это оптимизировать…
Как вариант: сперва загрузить всё в динамический массив, а потом уже покадрово отрисовывать всё.
Боюсь это не сработает, так как анимация отредерена как отдельные картинки в разрешение 720p.
-
АвторСообщения