Показать сообщение отдельно
Старый 24.08.2009, 12:20
Venya2007 вне форума Посмотреть профиль Отправить личное сообщение для Venya2007 Найти все сообщения от Venya2007
  № 1  
Ответить с цитированием
Venya2007

Регистрация: 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.