Skocz do zawartości

Czy GM domyślnie rysuje poza viewem?


nowy_user

Rekomendowane odpowiedzi

Hej, tworzę sobię program , w którym w jednym roomie będą różne tła , więc stworzyłem sobie krótką pętlę  w evencie , która jest odpowiedzialna za rysowanie sprite'a obok sprite'a. Zastanawiam się jednak, czy dla zwiększenia wydajności musze użyć funkcji if point_in_rectangle(px,py, view_xview[0]  - 256 , view_yview[0] - 256, view_xview[0]+view_wview[0]+, view_yview[0]+view_hview[0] + 256 ) , po to, żeby GM nie rysował tych sprietów poza viewsem? 

 

Czy może jednak GMS 1.4 sam to wie i domyślnie nie rysuje poza viewem, i nie ma konieczności umieszczania takiego dodatkowego kodu dla zwiększenia wydajności? Wie ktoś może?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli rysujesz sprity ręcznie tak jak w tym przypadku to GM nie ingeruje w nie w żaden sposób a więc za viewem też się będą rysować.

Tak po za tym wydaje mi się że chyba tylko backgroundy i tilesy poza viewem GM ukrywa ale to też tylko w tym przypadku gdy nie rysujesz ich ręcznie tylko np zostały postawione w roomie. 

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, I am Lord napisał:

Jeżeli rysujesz sprity ręcznie tak jak w tym przypadku to GM nie ingeruje w nie w żaden sposób a więc za viewem też się będą rysować.

Tak po za tym wydaje mi się że chyba tylko backgroundy i tilesy poza viewem GM ukrywa ale to też tylko w tym przypadku gdy nie rysujesz ich ręcznie tylko np zostały postawione w roomie. 

Czyli pomijając deaktywacje obiektów, to najprostsza optymalizacja to w sumie wyłączenie rysowania poza viewem we wszystkich obiektach? :D

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Sprity poza view są odrzucane przez DirectX/OpenGl. Także to powyżej to nieprawda :)

 

Btw. zamiast robić fora, jest taka funkcja draw_sprite_tiled(), jeśli już nie chce używać backgroundów (a teraz sprite i background to to samo).

Odnośnik do komentarza
Udostępnij na innych stronach

7 godzin temu, gnysek napisał:

Sprity poza view są odrzucane przez DirectX/OpenGl. Także to powyżej to nieprawda :)

 

To też nie do końca prawda, odrzucane są trójkąty podczas renderingu, po vertex shaderze (Vertex Post-Processing). Także żeby zminimalizować draw call'e, które też mają wpływ na wydajność, stosuje się własny clipping. Podejrzewam, że o to chodziło autorowi :)

Odnośnik do komentarza
Udostępnij na innych stronach

20 godzin temu, nowy_user napisał:

Dzięki wszystkim za odpowiedzi, dla pewności będę optymalizował kod w taki sposób aby na 100 % nie rysowało nic poza viewem.

 

IMO przedwczesna optymalizacja też jest zła, optymalizuj rysowanie sprite, kiedy faktycznie będzie miało to wpływ na wydajność ;) Przejrzyj może artykuł dot. optymalizacji na Yoyo, jest tam kilka wzmianek o optymalizacji rysowania spritów.

Odnośnik do komentarza
Udostępnij na innych stronach

38 minut temu, gnysek napisał:

No jak każdy sprite będzie miał kod do sprawdzania, czy jest w środku view czy poza, to samo sprawdzanie może zająć więcej czasu, niż rysowanie bez tych warunków.

 

Dokładnie, bez sensownego mierzenia wydajności, jakakolwiek próba optymalizacji nie ma sensu, bo może to być zwykłą stratą czasu.

 

Edit: Na szybko sprawdziłem, czy zmiana visible połowy sprite na false ma jakiś wpływ na FPS - i nie ma żadnego, FPS tak samo niski jaki był :P 

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