![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 70
|
Цитата:
Продолжая понравившиеся вам вычисления: если один объект это 10х10, т.е. занимает 100 пикселов, значит для покрытия всего экрана с разрешением 1920х1080 хватит 21.000 объектов. Это если округлить до тысяч в бОльшую сторону) А вердикт вам уже вынесли - только разбивать на куски и отрисовывать только ту часть, что видна пользователю. А остальное - по мере необходимости. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Я, кажется, понял.
Он хочет, чтобы можно было прокручивать "небо". С вашим количеством объектов вам придется похитрить с производительностью. Можно хранить информацию об объектах в Dictionary, после этого создаешь объекты, чтобы они вмещались экран. Потом просто обновлять эти объекты, как бы обманывать пользователя, что они меняются, а по-настоящему они не удаляются-прибавляются. |
|
|||||
|
[+1.3 06.03.12]
|
а вы представьте что весь этот мир - по крайней мере координаты и тип каждого объекта передаются из php в виде xml - такой поток тоже не сможет передаться за раз? не говоря о его построение во флеше...
__________________
http://apa-noua.com/portfolio |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Загрузить весь xml можно.
Постороить асинхронно тоже. Вот, например, вычисление 2000! загрузили, построили, потом ещё и на квады побили. И при отображении смотрим какие квады на экране, а в них уже копаемся и, что надо отображаем. MVC вам в помощь.
__________________
Отряд Котовскага |
|
|||||
|
[+1.3 06.03.12]
|
Всем спасибо за советы.
Но как быть в случае отдаления? Я именно поэтому и планировал создать не отображаемый объект со всем миром и при его зумации перестраивать через bitmapdata нужный кусок в визуальную часть. Тогда бы и автоматически выбирались необходимые пиксели у уменьшенного отдаленного объекта (например он закрашен на 70% синим => в уменшеном состояние будет синяя точка) Добавлено через 41 минуту Я так думаю, что гораздо проще не изобретать велосипед, а использовать готовую библиотеку, типа Alternativa3D, которая самостоятельно решает какие объекты отображать, а какие нет - да и производительности они добились нереальной. Может кто посоветует похожие модели миров в которых можно былобы в качестве плоскостей(вместо текстур) использовать векторные мувиклипы, картинки или даже видео?
__________________
http://apa-noua.com/portfolio |
|
|||||
|
Создавать всё сразу в клиенте - ресурсоемкое занятие.
Если например речь шла бы об игре, то я бы подгружал информацию из базы данных на сервере, по мере приближения к секторам. Запустите с таймером пустой for на 10.000.000 итераций, и посмотрите через сколько он завершится. Оптимизировать for можно только тем что внутри него. Добавлено через 2 минуты В уменьшенном состоянии у вас должен быть вес каждой звезды, и строить дальше отображение только по более весомым объектам.
__________________
adobe AS3 manual |
|
|||||
|
[+1.3 06.03.12]
|
Вы совершенно правы, учитывать необходимо глубину просмотра и если объект находится слишком далеко его также необходимо убивать.
В итоге должно получится чтото в виде 3д мира разбитого на секторы. В примитивной модели это может быть множество матриц наложенных друг на друга. Спасибо что развили такую тему, хоть я и задался изначально вопросом об оптимизации цикла FOR )))
__________________
http://apa-noua.com/portfolio |
|
|||||
|
Я выше ответил - создайте пустой цикл for, хоть на миллиард итераций.
Посмотрите сколько занимает это время выполнения. Обратитесь к векторам, HaXe, spritesheet'ам. Сделайте чтобы в цикле было минимум вычислений. - это ответ конкретно по циклу. Дело в его содержании, сам цикл не при чем.
__________________
adobe AS3 manual |
|
|||||
|
Цитата:
Создать 1 (один) BPix и отрисовать его 250000 (ну или сколько необходимо) раз в BitmapData в разных координатах.
__________________
משיח לא בא משיח גם לא מטלפן |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|