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 66 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 201 dni temu
Beta
2024.1400.0.831 •
2024.1400.0.827
 0.17.0

wydana  3 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
44 użytkownicy online na discordzie:
LeD, Carl-bot, pABLO, p..., 🧁Cupcake🧁, GibkiKaktus, Grela, Alkapivo, TobiasM (Morgo), Kuzyn, LadyLush, 𝕳𝖚𝖌𝖔 𝕲𝖔𝖓𝖝𝖆𝖑𝖊𝖝, Kalor, PhysX ᴺⱽᴵᴰᴵᴬ, r..., Threef, Uzjel, wSzymon1, Arrekin, MagnusArias, Dyno, 🆅🅸🆃🅾74🅼, Deusald, szmalu, Korodzik, Draczeq, RogerDodg3r, ZYGZAK, Miłosz, Danieo, bagno, antek, Kandif, Sporek, Jayu, moeglich, s..., d..., Krzysiek1250, h..., Shockah, PeekoHiko, m..., xVANiLL
Shoutbox
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
Kuzyn (21:30, 05.03.25)
uwierzę jak zobaczę :P
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?