์๋ ํ์ญ๋๊น,
๊ฐ์ฅ ์ ์ ํ ํฌ๋ก์ค ํ๋ซํผ ์ฉ์ด๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ธด ์ ๋ชฉ์ ์ฌ์ฉํ๊ณ ์ฌ๋๋ค์ด ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ด๊ฒ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฐฝ ํํธ์ ๋ํ ๊ธฐ๋ฅ ์์ฒญ์
๋๋ค. ์ ์ ์ ์ผ๋ก GLFW_MOUSE_PASSTHRU
(์ ํํ ์ด๋ฆ์ ๋ฏธ์ )์ด๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค. #1166(์ด ๊ฒ์๋ฌผ์ ๋์ ์๋ GIF)์์ ์ธ๊ธํ ๊ฒ๊ณผ ๋์ผํ ์์
์ ์ผ๋ถ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
(์ฐธ๊ณ ๋ก ์ด๊ฒ์ ์๊ฐ์ ์ธ ๊ด์ ์์ ํฌ๋ช ์ฑ๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ ์ด๋ฏธ ์ฌ๋ฌ ๋ฒ ๋ ผ์๋์์ต๋๋ค: https://github.com/glfw/glfw/issues?utf8=%E2%9C%93&q=transparent)
์ฐฝ
WndProc ์ฒ๋ฆฌ๊ธฐ๋ ๋ค์์ ์ํํฉ๋๋ค.
if (msg == WM_NCHITTEST)
return HTTRANSPARENT;
๋งฅ
'NSWindow'(ํ
์คํธ๋์ง ์์)์ 'ignoresMouseEvents' ์์ฑ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
https://developer.apple.com/documentation/appkit/nswindow/1419354-ignoresmouseevents?language=objc
์ฐฝ์ด ๋ง์ฐ์ค ์ด๋ฒคํธ์ ํฌ๋ช ํ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ ๊ฐ์ ๋๋ค.
์จ์ด๋๋
์๋ง๋ 'wl_surface::set_input_region'(ํ
์คํธ๋์ง ์์)
https://wayland.freedesktop.org/docs/html/apa.html#protocol -spec-wl_surface
์ด ์์ญ ์ธ๋ถ์์ ๋ฐ์ํ๋ ์ ๋ ฅ ์ด๋ฒคํธ๋ ์๋ฒ ํ๋ฉด ์คํ์ ๋ค์ ํ๋ฉด์ ์๋ํฉ๋๋ค. ํฉ์ฑ๊ธฐ๋ ํ๋ฉด ์ธ๋ถ์ ์๋ ์ ๋ ฅ ์์ญ ๋ถ๋ถ์ ๋ฌด์ํฉ๋๋ค. [...] ์ ๋ ฅ ์์ญ์ ์ด๊ธฐ๊ฐ์ ๋ฌดํ๋์ ๋๋ค. ์ฆ, ์ ์ฒด ํ๋ฉด์ด ์ ๋ ฅ์ ์๋ฝํฉ๋๋ค. ๋ณด๋ฅ ์ค์ธ ์ ๋ ฅ ์์ญ ์ค์ ์๋ ๋ณต์ฌ ์๋ฏธ๊ฐ ์์ผ๋ฉฐ wl_region ๊ฐ์ฒด๋ ์ฆ์ ์๋ฉธ๋ ์ ์์ต๋๋ค. NULL wl_region์ ์ ๋ ฅ ์์ญ์ด ๋ฌดํ์ผ๋ก ์ค์ ๋๋๋ก ํฉ๋๋ค.
X11
X11์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฐธ๊ณ ๋ก Qt๋ xcb_xfixes_create_region()
+ xcb_xfixes_set_window_shape_region_checked
.
https://git.merproject.org/mer-core/qtbase/blob/master/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp#L1151
์ปจํ ์คํธ(gif): glfw ์ฐฝ(๋ด ๋ง์ฐ์ค ์ปค์ ๋ฐ๋ก ์๋์ ์์)์ ๋๋๊ทธํ๊ณ ์์ผ๋ฉฐ ์๋์ ์๋ ์ฐฝ์ ๊ฐ์งํด์ผ ํด๋น ์ฐฝ์ ๋๋กญํ ์ ์์ต๋๋ค. #1166๊ณผ ์ ์ฌํ๊ฒ ๋ด ๋ชจ๋ ์ฐฝ์ ๋ฐํ ํ๋ฉด ํฌ๊ธฐ/์์น๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ์ธก์์ ๋๋ต์ ์ธ(๊ทธ๋ฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ) ๊ทผ์ฌ๊ฐ์ ์ ๊ณตํ ์ ์์ง๋ง ๋ฌผ๋ก ์ด๊ฒ์ ์ฐฝ ๊ด๋ฆฌ์๋ฅผ ์ฐํํ๊ณ ์ฐฝ์ ์ ์ ํ z ์์( ์ธ๊ตญ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฐฝ).
ํธ์ง ๋ช ํํ ํ๊ธฐ ์ํด ํ์ฌ win32 ๊ด๋ จ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ณ WndProc ํํฌ๋ฅผ ์ค์นํ์ฌ ์ด๊ฒ์ ํ ์คํธํ๊ณ ์์ต๋๋ค.
์ด๋ฆ ์ง์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ ๊ธฐ์กด GLFW ์ฐฝ์์ ์ด ๊ธฐ๋ฅ์ ํ ๊ธํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ๊น๋ค๋กญ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๊ธ์ ์ฌ์ ํ โโํด๋น ์ฐฝ์ ๋ํด ํ์ฌ ์บก์ฒ๋ ๋ง์ฐ์ค ์์น๋ฅผ ์์ ํฉ๋๋ค. ์ด๋ ๋ด ์ฌ์ฉ ์ฌ๋ก์์ ์ด์์ ์ด๊ณ ๋ฐ๋์งํ ๊ฒ์ด๋ฉฐ ๋ ๋ง์ ๊ฒ์ ์๊ฐํฉ๋๋ค. ์ ์ฐํ. ์ด๊ฒ์ด ๋ด๊ฐ GLFW_IGNORE_MOUSE_INPUTS
์ ๊ฐ์ ์ด๋ฆ์ ์ ์ํ์ง ์์ ์ด์ ์
๋๋ค. CursorPosCallback ๊ณผ glfwGetCursorPos() ๋ ๋ค ์ฌ์ ํ ์ ์๋ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ดํดํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค,
์ค๋ง๋ฅด
์๋
ํ์ญ๋๊น,
์ด์ ๋ํ ๋ง์ด ์์ต๋๊น? ์์ด๋์ด๊ฐ ํ๋ฅญํ๊ณ GLFW์์ ๋ณด๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ฐ ์์ผ๋ก ๋ญ๊ฐ๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค. Linux์ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ ์ฐฝ ์์ ์ค๋ฒ๋ ์ด๋ฅผ ๋ง๋ค์ด์ผ ํ์ง๋ง ์ฌ์ ํ ์ค๋ฒ๋ ์ด ๋ค์ ํญ๋ชฉ์ ํด๋ฆญํ๊ณ ์ถ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ @rokups์ ์ํด #1568๊ณผ ํจ๊ป GLFW_MOUSE_PASSTHROUGH
๋ก ์ถ๊ฐ๋์์ผ๋ฉฐ 3.4์ ํฌํจ๋ ์์ ์
๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๊ธฐ๋ฅ์ @rokups์ ์ํด #1568๊ณผ ํจ๊ป
GLFW_MOUSE_PASSTHROUGH
๋ก ์ถ๊ฐ๋์์ผ๋ฉฐ 3.4์ ํฌํจ๋ ์์ ์ ๋๋ค.