nowy_user Opublikowano 12 Grudnia 2018 Udostępnij Opublikowano 12 Grudnia 2018 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 Więcej opcji udostępniania...
I am Lord Opublikowano 12 Grudnia 2018 Udostępnij Opublikowano 12 Grudnia 2018 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 Więcej opcji udostępniania...
nowy_user Opublikowano 12 Grudnia 2018 Autor Udostępnij Opublikowano 12 Grudnia 2018 Ok , w takim razie już jest to jasne, dzięki ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MaxGaming Opublikowano 12 Grudnia 2018 Udostępnij Opublikowano 12 Grudnia 2018 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? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Grudnia 2018 Administratorzy Udostępnij Opublikowano 13 Grudnia 2018 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 Więcej opcji udostępniania...
Konrad-GM Opublikowano 13 Grudnia 2018 Udostępnij Opublikowano 13 Grudnia 2018 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 gnysek 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 13 Grudnia 2018 Autor Udostępnij Opublikowano 13 Grudnia 2018 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Grudnia 2018 Udostępnij Opublikowano 14 Grudnia 2018 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Grudnia 2018 Administratorzy Udostępnij Opublikowano 14 Grudnia 2018 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Grudnia 2018 Udostępnij Opublikowano 14 Grudnia 2018 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ł 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ę