Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Корректная подготовка растровой графики для игр (http://www.flasher.ru/forum/showthread.php?t=152712)

Ariel 22.03.2011 02:42

Корректная подготовка растровой графики для игр
 
Имеется такое понятие как облако. Даже много облаков! Разных! Нарисованных заботливо дизайнером. Отрендерённых заботливо в PNG. В игре летают! В 24 бита с прозрачностью. И вот конечно проблема: пускаем пачку (много!) облаков, оне друг на друга наезжают по-всякому, и у нас конкретно падает рендер-производительность! Облака большие. Края, которые прозрачные, аж до 50% от всей площади облака. И главное, что само облако не только по краям, но и само по себе полупрозрачное!!

Вопросы:
1) Если сделать альфу только по краям облаков, а середину оставить solid, но возрастёт ли производительность рендера ?
2) Просто прозрачный слой, импортированный из Фотошопа, жрёт ли производительность? Имеет ли смысл подрезать (Trim) такие бесхозные большие прозрачные края?

Thanks

goodguy 22.03.2011 07:25

Цитата:

Имеет ли смысл подрезать (Trim) такие бесхозные большие прозрачные края?
Конечно имеет

Цитата:

Просто прозрачный слой, импортированный из Фотошопа, жрёт ли производительность?
Естественно. Все, что просчитывается - жрет производительность.

zuxul 22.03.2011 09:41

Попробуйте метод отрисовки в одну BitmapData.

Tails 22.03.2011 09:57

Нужно каждое облако аккуратно вырезать и поместить в один символ. А не двигать несколько гигантских PNG по всей сцене.
Облачка должны быть только в зоне видимости. (За краями сцены их быть не должно, по сути там вообще ничего не должно быть.)

или да, вариантом zuxul, будет намного лучше.

Ariel 22.03.2011 10:24

2zuxul :: В одну БитмапДату отрисовать затруднительно, т.к. облака ходят десинхронизированно. И потом, разницы все равно никакой, будет одна большая Битмапа с разными участками прозрачности.

2Tails ::
Цитата:

Нужно каждое облако аккуратно вырезать и поместить в один символ.
Оно щас так и сделано.
Цитата:

Облачка должны быть только в зоне видимости. (За краями сцены их быть не должно, по сути там вообще ничего не должно быть.)
Оно и так. Маска на сцене...

cleptoman 22.03.2011 10:41

маска - это маска, которая не имеет отношения к дисплейлисту и мувикам в нем.
Цитата:

В одну БитмапДату отрисовать затруднительно, т.к. облака ходят десинхронизированно. И потом, разницы все равно никакой, будет одна большая Битмапа с разными участками прозрачности.
а если попробовать уйти от прозрачности в итоге? например взять статичную битмапдату - фон. взять массив с облаками и рисовать через setPixels в одну итоговую битмапдату.
по поводу "десинхронизированно". я так понимаю речь идет о движении облаков и изменении координат.
если так, то можно битмапдатам сделать легкую обертку, дополнив нужными свойствами и работать с ними.

п.с. как-то с утра у меня слог и рифма не та)). не знаю, поймете что-нибудь из моей писанины или нет.

Ariel 22.03.2011 10:48

Цитата:

например взять статичную битмапдату - фон.
Это так и есть сейчас.
Цитата:

взять массив с облаками и рисовать через setPixels в одну итоговую битмапдату.
Я не уверен, что так будет быстрее, чем просто двигать Битмапы. setPixels придется весь экран перерисовывать. А по верху еще и Гаррипоттеры летают. И все тормозит! В общем, я смотрю, нафильтрованные транспарентные облака не есть путь для Флаша. Не тянет!

Tails 22.03.2011 10:48

Ariel
Держите весь ваш левал в отдельном контейнере, не добавленном в список отображения.
Затем отрисовываете его в битмапу, размер которой равен ширине высоте окна флешки.
Битмапу добавляете в списке отображения.

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

пс Маска ни на милиметр не облегчает производительность. Объекты под ней всё равно перерисовываються.

Ariel 22.03.2011 11:00

2Tails :: Хороший метод, попробую. Спасибо. Но пока облака не занимают много места на экране - проблем нет! Пока они плавают за маской - проблем с производительностью не наблюдается. Рендер не рендерит. Как только их много приплывает, вот тогда они друг на друге и начинают притормаживать. Но все равно попробую слепливать такую Битмапу. И, соответственно, делать такой снимок надо на ЕнтерФрейме каждый раз, да?

Также, имеет ли смысл просить дизайнеров переделать сами облака, чтоб уменьшить общее количество альфы?

cleptoman 22.03.2011 11:01

если не жалко - дайте пару ваших адских облачков - пощупать)


Часовой пояс GMT +4, время: 14:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.