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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.08.2009, 12:20
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 1  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
По умолчанию Ускорение рендера

Здравствуйте. Подскажите как можно увеличить производительность рендера. У меня вывод на экран построен так:

Код AS3:
	public function render_Quad(ref_quad:V_Quad):void{
			if (ref_quad!=null){
				vertices[0]= ref_quad.x1;vertices[1]= ref_quad.y1
				vertices[2]= ref_quad.x2;vertices[3]= ref_quad.y2
				vertices[4]= ref_quad.x3;vertices[5]= ref_quad.y3
				vertices[6]= ref_quad.x4;vertices[7]= ref_quad.y4
 
				tex_coords[0]=ref_quad.tx1;tex_coords[1]=ref_quad.ty1
				tex_coords[2]=ref_quad.tx2;tex_coords[3]=ref_quad.ty2
				tex_coords[4]=ref_quad.tx3;tex_coords[5]=ref_quad.ty3
				tex_coords[6]=ref_quad.tx4;tex_coords[7]=ref_quad.ty4
 
 
				draw_display.graphics.beginBitmapFill(ref_quad.tex)
				draw_display.graphics.drawTriangles(vertices,indices,tex_coords)
				draw_display.graphics.endFill()
			}
		}
 
               public function render_beginScene(color:uint):void{
			draw_display.graphics.clear()
			draw_display.graphics.beginFill(color)
			draw_display.graphics.drawRect(0,0,d_w,d_h)
			draw_display.graphics.endFill()	
		}
 
		public function render_endScene():void{
			if (!display2.visible){
				display2.visible=true
				display.visible=false;
				draw_display=display
			}else{
				display.visible=true
				display2.visible=false;
				draw_display=display2
			}
		}
Все отлично работает, когда обьектов мало. Еще заметил, когда рисовать без текстуры, тоесть вместо beginBitmapFill заливать просто цветом beginFill, тогда также заметно быстрее работает. Интересно как в 3Д движках умудряются рисовать больше 3000 полигонов при приличной производительности. У меня же при 100 обьектах(200 триугольников), уже притормаживает.


Последний раз редактировалось Venya2007; 24.08.2009 в 12:33.
Старый 24.08.2009, 13:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
1. вы не очищаете graphics когда рисуете треугольники.
2. от того, что вы будете писать код слитно и все в одну строчку, работать он быстрее точно не станет
3. возможно, что drawTriangles не самый быстрый метод, возможно проблема вообще в другом месте.
Ну и кроме того - сравнение с null в AS3 имеет смысл только для переменных с типом * - для всего остального нужно просто использовать if (myVar)
__________________
Hell is the possibility of sanity

Старый 24.08.2009, 13:20
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 3  
Ответить с цитированием
Venya2007
[+4 16.07.08]

Регистрация: Jul 2008
Адрес: Gamburg
Сообщений: 108
wvxvw спасибо за ответ.

1. вы не очищаете graphics когда рисуете треугольники.
render_Quad вызывается между render_beginScene и render_endScene
2. от того, что вы будете писать код слитно и все в одну строчку, работать он быстрее точно не станет где вы видели все в одну строчку
3. возможно, что drawTriangles не самый быстрый метод, возможно проблема вообще в другом месте. каким способом можно быстрее нарисовать?
Ну и кроме того - сравнение с null в AS3 имеет смысл только для переменных с типом * - для всего остального нужно просто использовать if (myVar) спасибо за совет

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

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

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


 


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


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