Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.03.2010, 18:23
gr_crd вне форума Посмотреть профиль Отправить личное сообщение для gr_crd Посетить домашнюю страницу gr_crd Найти все сообщения от gr_crd
  № 1  
Ответить с цитированием
gr_crd
 
Аватар для gr_crd

Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
Question beginBitmapFill. Зависимость FPS от А: Размера BitmapData B: размера формы

Суть в следующем.
После многочисленных тестов, выяснился странный факт, что FPS при заливке области методом beginBitmapFill, никак не зависит ни от размеров заливаемой области, ни от размеров битмапы, использующейся для заливки.
Что это? Как-то нелогично получается...

Код AS3:
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
где bm10 bm100 bm1000 - битмапы размерами соответственно 10х10 100х100 1000х1000

graphics.beginBitmapFill(bm10); - если вместо bm10 использую bm100 bm1000 - никакой разницы - все так же 9 FPS..

graphics.drawRect(0, 0, 100, 100); - пробовал изменять размер области от 10х10 на 1000х1000..... - ничего. Все те же 9 FPS....

Хотел сделать что-то похожее на MipMapping... но выходит, что результаты для любых размеров BitmapData - одинаковые.....

Как так может быть? В чем я заблуждаюсь??
__________________
заткнись и делай

Старый 03.03.2010, 07:19
GentleFLASH вне форума Посмотреть профиль Отправить личное сообщение для GentleFLASH Найти все сообщения от GentleFLASH
  № 2  
Ответить с цитированием
GentleFLASH

Регистрация: Apr 2009
Сообщений: 117
По-моему все логично. В данном примере вызывается 50000 раз вызов метода beginBitmapFill, на мой взгляд это равносильно, что сказать устройству - сейчас текстура такая-то. А фактическая отрисовка ее происходит только один раз graphics.drawRect(0, 0, 100, 100); Логичнее было бы 50000 раз вызвать как раз graphics.drawRect(0, 0, 100, 100); а beginBitmapFill(bm10) всего один.

Старый 03.03.2010, 10:14
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
отрисовка в graphics.endFill();
в цикл надо ставить всё рисование


Код AS3:
			for (var i:uint = 0; i < 50000;i++){
                        graphics.clear();
                        graphics.beginBitmapFill(bm10);
			graphics.drawRect(0, 0, 100, 100);
			graphics.endFill();
 
			}
__________________
Отряд Котовскага

Старый 03.03.2010, 14:31
gr_crd вне форума Посмотреть профиль Отправить личное сообщение для gr_crd Посетить домашнюю страницу gr_crd Найти все сообщения от gr_crd
  № 4  
Ответить с цитированием
gr_crd
 
Аватар для gr_crd

Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
ну это в этом примере так, а в другом коде у меня просто много треугольников и каждому из них соответствует своя текстура.

т.е. допустим есть 3000 треугольников.

каждый из них рисуется методами lineTo.
и заливается текстурой через beginBitmapFill.

beginBitmapFill(BitmapData, Matrix);

в таком случае вызывать graphics.clear() перед отрисовкой каждого треугольника...
для этого примера это подошло бы, но не для отрисовки треугольников так как 2999 предыдущих естесственно очистятся.

мне показалось нелогичным то, что при заливке этих 3000 треугольиков битмапой 10х10 пикс FPS остается таким же как и при заливке битмапой 1000х1000.

от чего зависит скорость метода beginBitmapFill ?

получается что неважен размер области и размер битмапы а только количество вызовов?
__________________
заткнись и делай

Старый 04.03.2010, 10:29
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 5  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
ну у вас количество вызовов ни на что не влияет.. просто 50000 раз меняется ссылка на битмапу.. какая разница какого она размера? отрисовка то происходит 1 раз.
beginBitmapFill - быстрый метод - это только присвоение ссылки - отрисовка идёт в endFill
Код AS3:
graphics.clear();
for (var i:uint = 0; i < 500;i++){
 
                        graphics.beginBitmapFill(bm10);
			graphics.drawRect(i, i, i+100, i+100);
			graphics.endFill();
 
			}
__________________
Отряд Котовскага

Старый 04.03.2010, 16:45
gr_crd вне форума Посмотреть профиль Отправить личное сообщение для gr_crd Посетить домашнюю страницу gr_crd Найти все сообщения от gr_crd
  № 6  
Ответить с цитированием
gr_crd
 
Аватар для gr_crd

Регистрация: Mar 2009
Адрес: Kazakhstan, Almaty
Сообщений: 121
ааа, ну вообшем все прояснилось!)
пасибо!
__________________
заткнись и делай

Старый 04.03.2010, 19:39
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Цитата:
отрисовка идёт в endFill
Разве? Я endFill бывает не пишу - но ничего, рисует.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
beginBitmapFill , bitmapdata , fps , MipMapping , производительность
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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