Показать сообщение отдельно
Старый 13.12.2005, 12:21   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Несколько опытов по ускорению (теперь 4-5 кадров/сек):
program MY_3D;
const 
* numpoints=8;
* numlines=12;

var 
* points	:array[1..numpoints,1..5] of integer;
* lines* :array[1..numlines, 1..2] of integer;

* distance,i* * * * * : integer;
* FPS_LastCount,FPS_Count,MS,MSL: integer;
* * cx, cy* * * * * * : integer;

* rx, ry, rz* * * * : real;
* * Srx,Crx,Sry,Cry,Srz,Crz* : real;
* * ox,tx,ty,tz* * * * : real;
* * 
Procedure Rotate3D;
begin
* Srx:=Sin(rx);	Crx:=Cos(rx);
* Sry:=Sin(ry);	Cry:=Cos(ry);
* Srz:=Sin(rz);	Crz:=Cos(rz);
	for i:=1 to numpoints do
* begin
* //X rotation
* ty := points[i,2] * Crx - points[i,3] * Srx;
* tz := points[i,2] * Srx + points[i,3] * Crx;
* //Y rotation
* tx := points[i,1] * Cry - tz * Sry;
* tz := points[i,1] * Sry + tz * Cry;
* //Z rotation
* ox := tx;
* tx := tx * Crz - ty * Srz;
* ty := ox * Srz + ty * Crz;
* //Calculate new x and y location with perspective
* points[i,4] := Trunc(512 * tx / (distance - tz))+cx; //x
* points[i,5] := Trunc(512 * ty / (distance - tz))+cy; //y
* end;
end; 

begin 
	distance:=100;
	cx:=GetWidth/2;
	cy:=GetHeight/2;
	
* points[1,1]:=5;	points[1,2]:=-5;	points[1,3]:=-5;
* 
* points[2,1]:=5;	points[2,2]:=-5;	points[2,3]:=5;

* points[3,1]:=5;	points[3,2]:=5;	points[3,3]:=5;
* 
* points[4,1]:=5;	points[4,2]:=5;	points[4,3]:=-5;
* 
* points[5,1]:=-5;	points[5,2]:=-5;	points[5,3]:=-5;
* 
* points[6,1]:=-5;	points[6,2]:=-5;	points[6,3]:=5;

* points[7,1]:=-5;	points[7,2]:=5;	points[7,3]:=5;
* 
* points[8,1]:=-5;	points[8,2]:=5;	points[8,3]:=-5;
* 
* lines[1,1]:=1;	lines[1,2]:=2;
* 
* lines[2,1]:=2;	lines[2,2]:=3;
* * 
* lines[3,1]:=3;	lines[3,2]:=4;
* * 
* lines[4,1]:=4;	lines[4,2]:=1;
* * 
* lines[5,1]:=2;	lines[5,2]:=6;
* * 
* lines[6,1]:=3;	lines[6,2]:=7;
* * 
* lines[7,1]:=4;	lines[7,2]:=8;
* * 
* lines[8,1]:=1;	lines[8,2]:=5;
* * 
* lines[9,1]:=5;	lines[9,2]:=6;
* * 
* lines[10,1]:=6;	lines[10,2]:=7;
* * 
* lines[11,1]:=7;	lines[11,2]:=8;
* * 
* lines[12,1]:=8;	lines[12,2]:=5;

* while true do 
* * begin 
* SetColor(255, 255, 255);
* FillRect(0, 0, GetWidth, GetHeight);* 
* * 
* * rx:=rx+ToRadians(1);
* * ry:=2*rx;
* * rz:=3*rx;
* * 
* Rotate3D;
* * 
* SetColor(255, 0, 0); 
* //Draw3D;
* for i:=1 to numlines do
* begin
* * DrawLine(points[lines[i,1],4], points[lines[i,1],5], points[lines[i,2],4], points[lines[i,2],5]); 
* end;
* * 
* MS:=GetSecond(GetCurrentTime);
* If MS<>MSL Then
* * begin
* * FPS_LastCount:=FPS_Count;
* * FPS_Count:=0;
* * MSL:=MS;
* * end	
* Else
* * FPS_Count:=FPS_Count+1;
* * 
* * SetColor(0, 0, 255); 
* * DrawText('FPS:'+IntegerToString(FPS_LastCount), 0, 0);
* * 
* Repaint;
* * 
* if GetKeyPressed = KE_KEY1 then distance:=distance-10;
* if GetKeyPressed = KE_KEY3 then distance:=distance+10;
* if GetKeyPressed = KE_KEY2 then cy:=cy-2;
* if GetKeyPressed = KE_KEY4 then cx:=cx-2;
* if GetKeyPressed = KE_KEY6 then cx:=cx+2;
* if GetKeyPressed = KE_KEY8 then cy:=cy+2;
* * end; 
end.
И сам мидлет (8 кб)
__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 11.10.2011 в 01:09.
(Offline)
 
Ответить с цитированием