|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
|
beginBitmapFill. Зависимость FPS от А: Размера BitmapData B: размера формы
Суть в следующем.
После многочисленных тестов, выяснился странный факт, что FPS при заливке области методом beginBitmapFill, никак не зависит ни от размеров заливаемой области, ни от размеров битмапы, использующейся для заливки. Что это? Как-то нелогично получается... package { import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; public class bbf_test extends Sprite { var bm10:BitmapData = new x10(10,10); var bm100:BitmapData = new x100(100,100); var bm1000:BitmapData = new x1000(1000,1000); public function bbf_test():void { addEventListener(Event.ENTER_FRAME, ont); }//cons function ont(e:Event):void { graphics.clear(); for (var i:uint = 0; i < 50000;i++){ graphics.beginBitmapFill(bm10); } graphics.drawRect(0, 0, 100, 100); graphics.endFill(); } }//bbf_test }//pack graphics.beginBitmapFill(bm10); - если вместо bm10 использую bm100 bm1000 - никакой разницы - все так же 9 FPS.. graphics.drawRect(0, 0, 100, 100); - пробовал изменять размер области от 10х10 на 1000х1000..... - ничего. Все те же 9 FPS.... Хотел сделать что-то похожее на MipMapping... но выходит, что результаты для любых размеров BitmapData - одинаковые..... Как так может быть? В чем я заблуждаюсь??
__________________
заткнись и делай |
|
|||||
Регистрация: Apr 2009
Сообщений: 117
|
По-моему все логично. В данном примере вызывается 50000 раз вызов метода beginBitmapFill, на мой взгляд это равносильно, что сказать устройству - сейчас текстура такая-то. А фактическая отрисовка ее происходит только один раз graphics.drawRect(0, 0, 100, 100); Логичнее было бы 50000 раз вызвать как раз graphics.drawRect(0, 0, 100, 100); а beginBitmapFill(bm10) всего один.
|
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
отрисовка в graphics.endFill();
в цикл надо ставить всё рисование
__________________
Отряд Котовскага |
|
|||||
Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
|
ну это в этом примере так, а в другом коде у меня просто много треугольников и каждому из них соответствует своя текстура.
т.е. допустим есть 3000 треугольников. каждый из них рисуется методами lineTo. и заливается текстурой через beginBitmapFill. beginBitmapFill(BitmapData, Matrix); в таком случае вызывать graphics.clear() перед отрисовкой каждого треугольника... для этого примера это подошло бы, но не для отрисовки треугольников так как 2999 предыдущих естесственно очистятся. мне показалось нелогичным то, что при заливке этих 3000 треугольиков битмапой 10х10 пикс FPS остается таким же как и при заливке битмапой 1000х1000. от чего зависит скорость метода beginBitmapFill ? получается что неважен размер области и размер битмапы а только количество вызовов?
__________________
заткнись и делай |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
ну у вас количество вызовов ни на что не влияет.. просто 50000 раз меняется ссылка на битмапу.. какая разница какого она размера? отрисовка то происходит 1 раз.
beginBitmapFill - быстрый метод - это только присвоение ссылки - отрисовка идёт в endFill
__________________
Отряд Котовскага |
|
|||||
Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
|
ааа, ну вообшем все прояснилось!)
пасибо!
__________________
заткнись и делай |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 11:11. |
|
« Предыдущая тема | Следующая тема » |
Теги |
beginBitmapFill , bitmapdata , fps , MipMapping , производительность |
|
|