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:

Stabilna
2024.13.1.193 • 2024.13.1.242
wydana 73 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 208 dni temu
Beta
2024.1400.0.838 •
2024.1400.0.833
 0.17.0

wydana  3 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
2 użytkowników aktywnych:
gości: 1, userów: 1
 Adriann
(~ostatnie 15 minut)
Discord
45 użytkowników online na discordzie:
Draczeq, Nikas, Alice, LeD, Nitro Slav, Carl-bot, pABLO, Fox, p..., Grela, Alkapivo, Kowu, GMRussell, LadyLush, OdrzuconyKrakers, r..., Threef, Chell, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, Korodzik, RogerDodg3r, Sporek, Morro, ZYGZAK, Danieo, antek, Tidżi, g..., 21Lancz, Huder, Kandif, l..., Jayu, s..., d..., Add92, h..., Shockah, Nero, PeekoHiko, m..., xVANiLL
Shoutbox
Chell (08:18, 26.06.25)
to masz krótką pamięć, bo od 2014 jakoś nie wiadomo ilu nowych userów nie przybyło :-D
p
pablo1517 (18:34, 16.06.25)
Ja w sumie żadnego z tych nicków nie kojarze poza Gnyskiem xD
gnysek (10:00, 16.06.25)
Odwiedzić starych dobrych znajomych.
S
Sutikku (01:48, 14.06.25)
nie wiem który to już rok, że ciągle mechanicznie wchodzę na gmclan, w sumie sam nie wiem po co
S
Sutikku (01:47, 14.06.25)
SIEMA! U mnie znośnie
p
pablo1517 (21:48, 07.06.25)
Siema wszystkim! Co tam slychac?
gnysek (13:44, 10.04.25)
Za 3-4 miesiące GM przejdzie na wydania "półroczne", więc korzystanie z wersji beta żeby sprawdzić nowości będzie wskazane :P
Adriann (18:09, 08.04.25)
Odpowiadam, dzisiaj :D
Adriann (20:48, 04.04.25)
A kiedy te UI layery mają wejść do normalnej wersji gma?
gnysek (00:38, 11.03.25)
I jak, zobaczyłeś ? :D Trochę im zjechało na publiczny release, ale były już w ostatnich dniach lutego dostępne jak się wie, jak pobrać kandydatów do bety :P
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?