SimianVirus7 Opublikowano 24 Stycznia 2023 Udostępnij Opublikowano 24 Stycznia 2023 Zrobiłem nowy surface o wymiarach pokoju i rysuje sprite na x/y. Obracając nim pixele przeskakują, gdzie na application surface tego nie robi [gif podglądowy]. Gra startuje w rm_init o właściwościach: Room Settings: 1920x1080 Camera Properties: 1920x1080 Viewport Properties: 1920x1080 Po czym przechodzi na właściwe pokoje o właściwościach: Room Settings: 960x540 Camera Properties: 960x540 Viewport Properties: 1920x1080 Zmiana rm_init na te same wartości co wszystkie pozostałe daje ten sam efekt 😕 Próbowałem coś z aa_display, gpu_set_texfilter ale albo wywalało cały surface, albo rozmazywało wszystkie sprity. (faktycznie dość słaba jakość tego gifa, ale na rękach - niebieskich plamach, widać o co mi chodzi. Po lewej piksele przeskakują, a po prawej nie) Kod surface: //surf = surface_create(room_width, room_height); // -> w create event surface_set_target(surf) draw_clear_alpha(0,0) draw_sprite_ext(sprite_index, image_index, x, y, 1, 1, image_angle, c_white, 1); surface_reset_target(); draw_surface(surf,0,0); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 24 Stycznia 2023 Administratorzy Udostępnij Opublikowano 24 Stycznia 2023 Powiem, że nie mam pojęcia o co chodzi, bo u mnie rozmazuje jak należy: Podsyłam mój testowy projekt, może przeglądając go znajdziesz różnice w ustawieniach (sprawdź też Game Options): https://gmclan.org/up23_18_surface_test.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 24 Stycznia 2023 Autor Udostępnij Opublikowano 24 Stycznia 2023 Tak, zapomniałem dodać, że w opcjach mam odhaczoną opcję "Interpolate colours between pixels" ze względu na pixelart. W Twoim przykładzie jest ta sama sytuacja, kiedy ją odhaczę. Gdzieś czytałem, że to ze względu, że application_surface jest rysowana w większej rozdzielczości i skalowana do niższej. Nie wiem na ile to prawda i jak to faktycznie miało by działać i dlaczego akurat w ten sposób. Kod w tym wyjaśnieniu był mniej więcej taki (nie mogę tego teraz znaleźć): draw_surface_ext(application_surface,0,0, 0.5, 0.5,0,c_white,1); - gdzie 0.5 to xscale/ysclae; Zabawnie robi się wtedy, kiedy surface utworze o wymiarach spritu (sprite'u?... duszka? 😄) i obracam całym surface, a nie spritem. Wtedy przeskakiwanie pikseli nie występuje, a zachowuje się tak samo jak na application_surface. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy Rozwiązanie gnysek Opublikowano 24 Stycznia 2023 Administratorzy Rozwiązanie Udostępnij Opublikowano 24 Stycznia 2023 A widzisz, myślałem, że chcesz w drugą stronę. A jak sytuacja wygląda z włączonym app surface i ręczny rysowaniem go w Post Draw ? Ewentualnie sprawdź jaki jest rozmiar app_surface - może musisz go... zmienić, żeby pasował do rozmiaru 960x540 SimianVirus7 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 24 Stycznia 2023 Autor Udostępnij Opublikowano 24 Stycznia 2023 Zrobiłem surface o wymiarach x4 i przeskalowałem w dół i faktycznie daje to zamierzony efekt. Pytanie jak bardzo wpływa to na wydajność, bo jeden surface ok, ale jak się ma takich kilka? Będę chyba musiał wymyślić coś innego. Cytat zmienić, żeby pasował do rozmiaru 960x540 Próbowałem, to samo 😕 Cytat sprawdź jaki jest rozmiar app_surface Zrobiłem surface_get_width/height(application_surface) i dało wymiar Viewport Properties (okno wyświetlania gry) czyli 1920x1080, a room i camera ma 960x540 🤔 Czyli faktycznie application_surface ma 2 razy bardziej zagęszczone pixele i pewnie przez to nie przeskakują... taki antyaliasing EDIT: Tak, kiedy zmienię wszystko na jednakową wartość, czyli 1920x1080 i application_surface ma zagęszczenie 1:1 to piksele też przeskakują 🙂 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
art22pl Opublikowano 1 Marca 2023 Udostępnij Opublikowano 1 Marca 2023 Też zauważyłem ten problem, application_surface działa lepiej od nowych tworzonych surface . Próbowałem różnych funkcji i filtrowania itp i nic... Tylko skalowanie pomagało. 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ę