Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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.

Opublikowano

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...

Opublikowano

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.
Opublikowano

... tak, przejmować się. Naprawdę myślisz, że koło narysowane w paincie o promieniu 300px będzie lepsze bo zajmuje dodatkowo pamięć o grafikę 600x600px?

Opublikowano
A o funkcji draw_set_circle_precision(precision) zapomnieli?

 

lol w dokumentacji gma 6.1 nie ma tej funkcji. Próbowałem znaleźć po indexch i w search nie było, mimo to jak napisałem w gmie to ją pokolorował.

Opublikowano

na przykładzie Tymona skryptu można zrobić pętle która wykonywała by się tyle razy ile wynosi promień i co stepa pętli zmniejszać promień rysowanego koła

ale to nie wydajne.

Opublikowano

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. ;)

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ę...