PDA

Просмотр полной версии : flash тормозит при рисовании с помощью drawTriangles


DEAFFF
14.04.2011, 21:28
Привет!

Вообщем проблема такая - рисую 2 треугольника с помощью drawTriangles на весь экран приложения (800х600) каждый кадр в перспективе, очищая естественно экран перед отрисовкой. Ужасно начинает тормозить и проц на 100%, выдает 20 фпс. Причем зависит строго от площади отрисовки, т.е. если я уменьшаю размер приложения до 640х480 то рисуется быстрее - и проц 50% при 30 фпс. Помню стоял виндовс ХП - все работало шустро, а щаз виндовс 7...

Встречался кто нить с такой проблемой?

Прилагаю скриншоты.

1.jpg - смотрим на домик, как видно площадь отрисовки примерно 40%
выдает 25-30 из 30 фпс
рендер тайм - т.е. время затраченное на рендер сцены и вызовы drawTriangles - 9 мс
как видно треугольников дофига

2.jpg - смотрим вниз на землю, площадь отрисовки 100%
выдает 13-15 из 30 фпс
рендер тайм - 1 мс
как видно треугольников всего два

Вся сцена подрезается - т.е. делается clipping

Мне кажется, что в виндовс 7 с моим железом какая то проблема... хотя как такое может быть...
Причем если делать перспективную коррекцию старыми методами - т.е. дроблением на треугольники - то все работает очень быстро.

Ariel
16.04.2011, 04:40
хотя бы скриншот подколите.. Совсем неясно...
Например, если рисовать стандартным набором graphics ничего вообще никогда не тормозит.

От площади оно всегда зависит - рендерер флашовый слаб потому как виртуальный (байткодовый)

i.o.
16.04.2011, 05:52
рендерер флашовый слаб потому как виртуальный (байткодовый)
с этого места поподробнее, пожалуйста

DEAFFF
16.04.2011, 13:04
обновил пост

Ariel
16.04.2011, 17:25
2i.o. : нечего тут поподробнее. Виртуальная машинка завсегда будет слабее нативного кода. От 15, 100 раз, до бесконечности. Если переписать ЛЮБУЮ задачу с Флаша в платформозависимое приложение, получаем зверский прирост мощностев. Именно поэтому дядюшка Джобс тормозит продвижение FP на свои I-продукты - перегреется все и батареи сядут вмиг.

DEAFF : Как насчет теста на разных машинах\операционках? Везде одинаково тормозит?

i.o.
16.04.2011, 17:35
2i.o. : нечего тут поподробнее. Виртуальная машинка завсегда будет слабее нативного кода. От 15, 100 раз, до бесконечности. Если переписать ЛЮБУЮ задачу с Флаша в платформозависимое приложение, получаем зверский прирост мощностев
Сразу видно, вы человек знающий работу ФП. Поверю наслово.

DEAFFF
16.04.2011, 17:37
С виртуальной машиной все ок, я ж говорю что время рендера а т.е. время исполнения всего кода отрисовки 9 мс в первом случае, и 1 мс во втором, но тормозит во втором, а в первом нет? Отсюда вывод - виртуальная машина работает нормально, и чем больше площадь отрисовки, тем дольше флеш плеер рисует треугольники. К тому же тут даже не в отрисовке а скорее в методе рисования drawTriangles, потому как если рисовать обычными moveTo lineTo - то все быстро!

Дак в том то и дело на других современных машинах все окей... Скорее всего конфигурация моего компа довольно старая. Наверняка для современных машин срабатывает какая то оптимизация.

Obi
16.04.2011, 19:04
> Если переписать ЛЮБУЮ задачу с Флаша в платформозависимое приложение

Ну флеш тормозит не из-за кроссплатформенности. Возьмите в качестве примера виртуальную машину java. Она кроссплатформенная и очень быстрая.

Ariel
16.04.2011, 23:26
Она все равно по умолчанию медленнее нативного кода. Это плата за кроссплатформенность.