Exigo Opublikowano 3 Września 2011 Udostępnij Opublikowano 3 Września 2011 Gdyby tylko istniała funkcja surface_set_offset, nie zakładał bym tego tematu. Tak więc, draw_surface z "sztucznym" offsetem nie sprawia problemu. Wystarczy odjąć pozycję x i y od offsetu x i y (każdy wymiar oddzielnie). Co natomiast, jeśli chcemy obracać i skalować, jak w przypadku draw_surface_ext? Ma ktoś pomysł na taką funkcję? ; ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hudy0070 Opublikowano 3 Września 2011 Udostępnij Opublikowano 3 Września 2011 Nie wiem czy o to chodziło. Nie testowałem tego. Kod pochodzi ze strony http://www.gmlscripts.com GML /* ** Usage: ** draw_surface_center_ext(id,x,y,xscale,yscale,rot,color,alpha) ** ** Arguments: ** id surface id ** x,y draw position of center of surface ** xscale horizontal scaling of surface ** yscale verticle scaling of surface ** rot degrees of rotation ** color color blending of surface ** alpha alpha of surface ** ** Returns: ** nothing ** ** Notes: ** Draws a surface centered at the given point with rotation, ** scaling, color blending, and alpha. ** ** GMLscripts.com */ { var surface,sx,sy,xscale,yscale,rot,color,alpha,mx,my; surface = argument0; sx = argument1; sy = argument2; xscale = argument3; yscale = argument4; rot = argument5; color = argument6; alpha = argument7; mx = surface_get_width(surface)/2; my = surface_get_height(surface)/2; d3d_transform_stack_push(); d3d_transform_set_identity(); d3d_transform_add_translation(-mx,-my,0); d3d_transform_add_scaling(xscale,yscale,0); d3d_transform_add_rotation_z(rot); d3d_transform_add_translation(sx,sy,0); draw_surface_ext(surface,0,0,1,1,0,color,alpha); d3d_transform_stack_pop(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 Lub po prostu użyj lengthdirów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 nie, zdecydowanie wydajniejsze jest używanie funkcji d3d, brawa dla hudego, że nie boi się testować rozwiązań w celu szukania najlepszego :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 1. brawa dla hudego, że nie boi się testować rozwiązań w celu szukania najlepszego Nie testowałem tego 2. Sprawdziłem wydajność obu rozwiązań. Taka sama. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 GML timeStart = current_time; repeat(1000) { <tutaj rysuj danym sposobem> } time = current_time; show_message("time: "+string(time)); a czyzby w ten sposob? bo widzisz, ja kiedyś testowałem oba, gdy robiłem animacje szkleletowe w gm i wyszło, że funkcje d3d od transformacji są szybsze niż używanie lengthdirów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 4 Września 2011 Udostępnij Opublikowano 4 Września 2011 Właśnie w ten sposób, tylko że powtarzałem 10000 razy. Może d3d byłoby szybsze, gdyby rysowano wszystkie surface naraz, ale nie dam sobie za to uciąć głowy. Może to zależy od komputera, choć również nie jestem pewien. Swoją drogą, patrzyłem, jak szybko wywołuje się pusty skrypt. Wyszło mi, że żeby gra działała płynnie (na moim komputerze, procesor 2.4 GHz, proces technologiczny 130 nm), można wywołać max. 6000 pustych skryptów na sekundę. Tyle samo pustych obiektów maksymalnie mogło być w roomie, żeby program zachował płynność (w trybie Debug!), więc wynik nie jest zbyt dobry. Dane z GM 7.0 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hudy0070 Opublikowano 5 Września 2011 Udostępnij Opublikowano 5 Września 2011 A to przypadkiem nie zależy w jakiś sposób od room speedu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 5 Września 2011 Udostępnij Opublikowano 5 Września 2011 nie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 5 Września 2011 Udostępnij Opublikowano 5 Września 2011 o.O Liczba FPS-ów przy room speedzie 60 i przy 6000 pustych obiektach oscyluje wokół 50-55, a przy room speedzie 1000 - 70-80. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 5 Września 2011 Udostępnij Opublikowano 5 Września 2011 Ilość fps'ów nie może być większa niż room speed, dlatego zawsze lepiej jest ustawić większy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę