Skocz do zawartości

Rekomendowane odpowiedzi

Powiem krótko - nawet Dawidds nie będzie miał się do czego przyczepić :)

 

 

Link: http://www.gmclan.org/up5655_12_kolko.html

 

Sterowanie:

1 - moje rysowanie koła

2 - GM-owe rysowanie koła

 

Aha - Mój skrypt jest wydajniejszy przy rysowaniu dużych kół.

Odnośnik do komentarza
Udostępnij na innych stronach

postanowiłem zmarnować moje jakże cenne 5 minut, które mogłem przeznaczyć na sprawdzenie pracy domowej, by pobrać, skonwertować z gmk na gm6 i przetestować to oto dzieło.

 

twoje kółka wyglądają lepiej, ale nie wiem czy to jest wydajniejsze (tak prosto myśląc rysowanie dwudziestoczterokąta jest wydajniejsze niż wielokąta z dynamicznie dobieraną liczbą wierzchołków).

 

edit: teorię o większej wydajności twojej metody włóż między bajki.

 

rysowałem 100 kół na klatkę twoją i GMową metodą, o promieniu 450.

twoja metoda - 15fps

gmowa - 600fps

 

cóż, twoje ładniej wygląda, ale w życiu go nie użyję do rysowania małych kół.

 

7/10 -> 4/5 się należy.

Odnośnik do komentarza
Udostępnij na innych stronach

Ciekawe...

U mnie wygląda to tak:

60 moich 450 - 8

60 GM-owych 450 - 15

Pewnie dlatego (choć nie jestem pewien), że w GM6 działa to trochę inaczej.

 

E: Zresztą też uważam, że też bez sensu używać mojego skryptu do małych kół. Po co rysować (przy dokładności 5) 52 primitive, skoro koło GM-owe ma 24 wierzchołki...

Odnośnik do komentarza
Udostępnij na innych stronach

OK, to teraz mały materiał edykacyjny:

GML
// circle( x, y, r, precision )

x = argument[0];

y = argument[1];

r = argument[2];

 

c = 90 / argument[3];

a = c;

 

px = r;

py = 0;

 

repeat( argument[3] )

{

lx = px;

ly = py;

px = lengthdir_x( r, a );

py = lengthdir_y( r, a );

a += c;

 

draw_line( x + lx, y + ly, x + px, y + py );

draw_line( x - lx, y + ly, x - px, y + py );

draw_line( x + lx, y - ly, x + px, y - py );

draw_line( x - lx, y - ly, x - px, y - py );

 

// dla zobrazowania sposobu rysowania

sleep( 100 );

screen_refresh();

}

Obrazuje sposób rysowania koła w 4 razy prostszy sposób, a dlaczego aż 4? Analizuj kod.
Odnośnik do komentarza
Udostępnij na innych stronach

GML
// circle_filled( x, y, r, precision )

x = argument[0];

y = argument[1];

r = argument[2];

 

c = 90 / argument[3];

a = 0;

 

i = 0;

draw_primitive_begin( pr_trianglestrip );

repeat( argument[3] + 1 )

{

px = lengthdir_x( r, a );

py = lengthdir_y( r, a );

 

draw_vertex( x, y );

draw_vertex( x + px, y + py );

 

a += c;

i += 1;

}

draw_primitive_end();

 

s[0,0] = -1;

s[0,1] = 1;

 

s[1,0] = 1;

s[1,1] = -1;

 

s[2,0] = -1;

s[2,1] = -1;

 

si = 0;

repeat( 3 )

{

i = 0;

draw_primitive_begin( pr_trianglestrip );

repeat( argument[3] + 1 )

{

draw_vertex( x, y );

draw_vertex( x + px * s[si,0], y + py * s[si,1] );

i += 1;

}

si += 1;

draw_primitive_end();

}

Wybaczcie niedbalstwo, ostatnio niezły ze mnie świntuch. ;)
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...