![]() |
много много объектов на сцене
Здравствуйте, положим мне нужно сверстать огромную сцену (размером скажеи 1М на 1М пикселей и столько же объектов). Ну захотелось мне сделать игровой мир бесконечный почти. Ну само собой возникает вопрос производительности т.к. скажем старлинг пробегаясь по дереву пробежится по нему мульён раз. А хотелось бы пробегаться только по тем объектам что во вьюпорте. Вопрос - сколько раз пробежиться старлинг своим render если на сцене 2 000 000 объектов? И второй - как рендерить только то что в зоне видимости и без пробегания всего списка детей?
|
вроде даже у нативного дисплей-листа есть обрезание границами вьюпорта, думаю в старлинге должно быть нечто подобное
Цитата:
|
Старлинг рендерит все, в т.ч то что находится вне вьювпорта.
Да, с q-tree вариант хороший, если все объекты не находятся в движении. а так лучше делать свой qt на каждый слой. |
Цитата:
|
тут вопрос широкий. по старлингу вот мои доказательства
Код AS3:
а за вектор спасибо, буду копать теперь) Добавлено через 12 минут ВСЕМ СПАСИБО! |
hasVisibleArea - это проверка visible|scale|alpha
Даниэль писал что проверка габаритов на пререндере создает больший оверхед, чем отправка на карту всего подряд) |
а это код из 1.8 из междупрочим) http://wiki.starling-framework.org/e...quadtreesprite а это то что нужно)
|
Да, там еще есть либа разбивающее один displayObjectContainer на слои, и контейнер собирающий их в порядке слоев, а не painterDraw. Думаю в твоем случае есть смысл их объеденить)
|
Всегда можно найти способ, добавлять минум объектов в определенный этап времени. 2000К объектов на сцене - вот где настоящий оверхэд.
Деревья квадрантов, очень хороший вариант. Но можно и свой гибрид придумать. Все зависит от задач. Мне доводилось делать очень большие карты, и я долго ломал голову над реализацией. В итоге вопрос все-таки решил. И у меня было что-то типа комбинации деревьев квадрантов для расположения динамических объектов. И простого BitmapData#draw() с выбором нужного региона для фона |
| Часовой пояс GMT +4, время: 13:50. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.