Przycinanie do prostokątnego obszaru

środa, 04 Września 2024, 12:54
Czas czytania 1 minuta, 19 sekund
Zgodne z GM: gms2
GM 2024.8+ pozwala na łatwe "przycięcie" rysowania do wybranego obszaru.
Wraz z GM 2024.8 pojawiła się opcja ograniczania obszaru rysowania za pomocą funkcji gpu_set_scissor(x, y, w, h).
Dzięki funkcji gpu_get_scissor, łatwo możemy z kolei zapamiętać obecne ustawienie, co pomaga przywrócić je po zakończeniu rysowania "przyciętej" strefy.

Typowe użycie, polega na zapamiętaniu obecnych ustawień, przycięciu obszaru, narysowaniu tego czego potrzebujemy a następnie na zresetowaniu ustawień.

Kod w tej sytuacji wygląda więc tak:
kodvar _s = gpu_get_scissor();
gpu_set_scissor(50, 50, 50, 50);
// rysujemy
gpu_set_scissor(_s);

Uwaga!
W runtime 2024.8.0.2016 jest bug, który - mimo założenia, że gpu_set_scissor może przyjąć jako argument zarówno jeden struct z parametrami {x,y,w,h} jak i 4 osobne argumenty x,y,w,h - sprawia, że działa tylko ten drugi sposób. W tej sytuacji wystarczy gpu_set_scissor(_s); zamienić na
gpu_set_scissor(_s.x, _s.y, _s.w, _s.h);

Praktyczne użycie:
kodvar _s = gpu_get_scissor();
gpu_set_scissor(50, 50, 100, 50);
// rysujemy
draw_sprite_tiled(pattern_83, 0, mouse_x, mouse_y);
draw_set_color(c_red);
draw_text(45, 45, "Testowy napis");
gpu_set_scissor(_s);

Dzięki czemu, to co normalnie wyglądałoby tak:

Grafika: /upload/ajax/20240904_67960cf1e5097e2970203d575edd96b5.png

Zostanie przycięte tak:

Grafika: /upload/ajax/20240904_748a7a1d9bb30274d79ce02302eb1411.png

Ta technika może być przydatna do rysowania interfejsów, okien dialogowych, czy np. mapy w grze.
Komentarze (łącznie 0):
Nie ma jeszcze żadnego komentarza. Czas to zmienić

Najnowsze wersje GameMakera:

LTS
2026.0.0.16 • 2022.0.3.99
wydana 97 dni temu
Beta
2026.100.0.1142 •
2026.100.0.1090
 GMRT beta 0.21.0

wydana  dziś
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
45 użytkowników online na discordzie:
szynka, Miłosz, 🧁Cupcake🧁, Grela, Nikas, Alice, LeD, Carl-bot, Fox, GibkiKaktus, Wielki Druid, GMRussell, Tidżi, fervi, 𝕯𝖎𝖆𝖓𝖆, PhysX ᴺⱽᴵᴰᴵᴬ, r..., RogerDodg3r, s..., Murrri, Kandif, Jarkozpl, HappyOrange, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, Korodzik, sgames, Morro, OdrzuconyKrakers, Ulti, Danieo, Mtax, g..., RuLing, Morti, l..., Cebul, Borek, moeglich, Add92, h..., Shockah, xVANiLL
Shoutbox
gnysek (01:00, 22.08.26)
Będzie wkrótce spory plugin do GM z kilkunastoma QoL, trwają prace ;)
Wojo (11:35, 13.08.26)
Gratuluję i dziękuję w imieniu aktywnych użytkowników GMClanu!
gnysek (23:13, 12.08.26)
Szybkie info, że GMCLAN chodzi obecnie na cloudflare więc wyciąłem boty :)
Wojo (21:21, 28.06.26)
na ten moment czerwiec prezentuje się dość przyzwoicie jesli chodzi o ilosc wpisow w shoutboxie bo aż trzy! a taki styczeń zero :0
gnysek (15:06, 10.06.26)
oraz pokój na świecie
Kuzyn (17:16, 08.06.26)
i urlop
gnysek (11:13, 05.05.26)
czekamy na GMRT
Wojo (14:53, 04.05.26)
Co tak cicho?
gnysek (11:01, 30.04.26)
Grill panie, grill.
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?