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.11.0.179 • 2024.11.0.227
wydana 40 dni temu
LTS
2022.0.3.85 • 2022.0.3.99
wydana 56 dni temu
Beta
2024.1300.0.720 •
2024.1300.0.733
 0.15.4

wydana 12 dni temu
= IDE, = Runtime, = GMRT
Użytkownicy online
1 użytkownik aktywny:
gości: 1,
(~ostatnie 15 minut)
Discord
48 użytkowników online na discordzie:
🧁Cupcake🧁, Alice, LeD, Carl-bot, p..., Jamabaiz (Matrix_), lethian, Grela, jAfF, Wielki Druid, Alkapivo, TobiasM (Morgo), Kowu, LadyLush, Kuzyn, GMRussell, Draczeq, OdrzuconyKrakers, fervi, m..., Kalor, r..., antek, chleb, HappyOrange, Moldis, Arrekin, Domeen0, Dyno, Deusald, szmalu, m..., Morro, ZYGZAK, Miłosz, sutikku, Ulti, Sporek, Tidżi, Danieo, Kandif, g..., Huder, l..., s..., Add92, Krzysiek1250, Shockah
Shoutbox
Wojo (10:25, 27.12.24)
Jak tworzyłeś* ah ta niecną autokorekta (kiedyś też stworzyłem apki na androida w sumie)
Wojo (10:23, 27.12.24)
O siemka baca, czasami myślę o tobie w kontekście tego jak tworzyłem apki na androida. Swoją drogą czasami zapominam, że forum istnieje bo cały ruch teraz utrzymuje się na discordzie, ale pora to zmienić!
Uzjel (20:17, 10.12.24)
Cały ruch przeniósł się na Discorda.
MagnusArias (17:43, 01.12.24)
O matko... a ja tutaj jestem od ponad 15 lat i czasami zaglądam... biernie bo biernie, ale czasem wpadnę
gnysek (11:46, 17.11.24)
Witamy, witamy!
baca (12:22, 16.11.24)
To już 25 lat.. Witam po paru latach nieobecności.
gnysek (11:05, 15.11.24)
Natomiast obecne forum istnieje od 2004, jak z iglu.cz na gmclan.org przeszliśmy i od tego czasu nie było resetów danych.
gnysek (12:35, 13.11.24)
Ogólnie GMCLAN istnieje 22 lata, ale na to trofeum nie zrobiłem (jeszcze xD)
Chell (20:41, 08.11.24)
wow, ta emotka w ogóle nie wygląda jak : O xD
Chell (20:40, 08.11.24)
tylko? :O 4tk ma 15
Starsze wpisy znajdziesz w Archiwum.
Ankieta
Ile zarobiłeś do tej pory na grach stworzonych w GM?