инвертированная картинка
есть ли возможность в МПаскале с помощью библиотеки, прорисовать картинку не как обычно слева-направо, а наоборот справа-налево?
Это былобы удобно, меньше места в оперативке будет занимать, и в архиве тоже. :) Потому что у меня в игре(и думаю не только у меня) почти все картинки с анимацией персонажей, дублируются только с флипом справоналево. Появилась такая идея оптимизации. Тема наверно ещё не обсуждалась. |
Ответ: инвертированная картинка
Думаю, стоит написать функцию разворота в отдельном модуле, причём лучше на чистой Яве. И, при загрузке ресурсов, просто добавлять ещё и развёрнутый.
Идея ясна, примеров на яве до Ж, думаю, даже конечная библиотека во "Всемирной Помойке" найдётся... Поиск, как всегда, рулит. |
Ответ: инвертированная картинка
Далеко искать не пришлось: http://forum.boolean.name/showthread.php?t=3515
Вот ещё: http://forum.boolean.name/showthread.php?t=6132 |
Ответ: инвертированная картинка
Да, просто нужно иногда поюзать поиск
|
Ответ: инвертированная картинка
мне нужно как раз для экономии оперативной памяти,
чтобы не загружать в оперативку дополнительные кадры, то есть взять в определённом случае картинку и нарисовать обычным drawimage, когда персонаж идёт вправо, а в другом случае взять эту же картинку, но просто прорисовать её в обратном направлении, когда персонаж идёт влево. а все эти библиотеки загружают в память новую картинку но только инвертированную,так можно только лишь сэкономить размер jar файла. ну а спрайты я вообще не люблю, помоему ими неудобно пользоваться, лучше обычным способом подгружать каждый кадр отдельно. я подсчитал у меня в игре на главного героя приходится 44 кадра для торса и 26 кадров для ног многовато помоему, и все эти кадры подгружены в оперативку, если научится прорисовывать картинку в обратном направлении то кадров станет в 2 раза меньше тк каждый кадр дублируется, нпример кадр стоя влево и кадр стоя вправо идентичный но инвертированный. ну дак как можно такое вообще сделать или нет? |
Ответ: инвертированная картинка
А я чёто не понял, а чем не устраивает
Код:
DrawImage(Rotate(image1),0,0); И для рисования на канве развёрнутой картинки там есть функция гдето... |
Ответ: инвертированная картинка
а что возврашает функция - Rotate(image1) картинку?
соответственно на время прорисовки когда ты вызываеш - DrawImage(Rotate(image1),0,0); то программа на некоторое время создаёт в памяти эту самую картинку а это мне кажется подобно тому чтобы делать так: drawimage(loadimage('/img.png'),0,0); или я ошибаюсь? |
Ответ: инвертированная картинка
Цитата:
Если есть подозрение на утечку памяти, можно использовать "сборщик мусора" для уничтожения неиспользуемых объектов. |
Ответ: инвертированная картинка
я понимаю что копирование изображения прорисовка его и потом удаление
не будет занимать много оперативной памяти но ведь это получается будет сильно тормозить процессор а нельзя ли рисовать картинку также как в drawimage но только начиная с последнего бита и в обратном направлении? я то и спрашиваю потомучто сам незнаю даже возможно ли это. вот например взять игру contra на NES(dandy), неужели там у них все дублтрующиеся кадры персонажей только повёрнутые в другую сторону, существуют как отдельный кадр? мне кажется что там именно прорисовка идёт в обратную сторону а кадр один и тот же. |
Ответ: инвертированная картинка
Цитата:
тоже создаёт на время картинку, прорисовывает а потом удаляет. но ведь никто не посоветует такой способ, гораздо меньше грузится процессор если заранее подгрузить картинку, и потом её только прорисовывать а не каждый repaint; снова загружать и удалять, хотя опять же если всё время пользоваться drawimage(loadimage('/img.png'),0,0); то оперативки будет вообще почти не занято. но зато как всё будет тормозить.... я же хочу и оперативки оптимально использовать и процессор вообще по минимуму. |
Ответ: инвертированная картинка
Цитата:
а как же contra интересно как там всё происходит? |
Ответ: инвертированная картинка
Может быть, подобное возможно в более сложных языках(хотя и то врядли), но не в java, там нет прямой работы с памятью.
А на счет дендевских игр - не помню, какой там точно принцип, но по сути, игра это не программа, а приставка - не компьютер, там, на сколько я помню, используются другие механизмы создания изображения. |
Часовой пояс GMT +4, время: 19:57. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot