Skocz do zawartości
  • 0
nowy_user

Czy GM domyślnie rysuje poza viewem?

Pytanie

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?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

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. 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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 :)

  • Super (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
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 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×