Godot: [3.0] ๋ทฐํฌํŠธ ํ™”๋ฉด ์บก์ฒ˜๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2017๋…„ 04์›” 12์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: godotengine/godot

์šด์˜ ์ฒด์ œ ๋˜๋Š” ์žฅ์น˜-Godot ๋ฒ„์ „ : Linux, Godot 3.0 (๋งˆ์Šคํ„ฐ)

๋ฌธ์ œ ์„ค๋ช… :
๋ทฐํฌํŠธ์—์„œ ํ™”๋ฉด ์บก์ฒ˜๋ฅผ ๊ฐ€์ ธ ์˜ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„ :

get_viewport().queue_screen_capture()
yield(get_tree(),"idle_frame")
yield(get_tree(),"idle_frame")
var i = get_viewport().get_screen_capture()
i.save_png("user://cap.png")
bug rendering

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@MarianoGnu ๋งž์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ViewportTexture :: get_data ()๊ฐ€ GDScript์— ๋ฐ”์ธ๋”ฉ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ ๋ฟ์ด์ง€ ๋งŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด์ œ queue_screen_capture ()์™€ get_screen_capture ()๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

gdscript์—์„œ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ 'viewport.get_texture (). get_data ()'๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜์žˆ๋Š” Image์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ 'image.lock ()'๋ฐ image.unlock () '์„ ํ˜ธ์ถœํ•˜๋ฉด ํ”ฝ์…€์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?).

๋‹ค์Œ์€ ํ™”๋ฉด์—์„œ ์ƒ‰์ƒ์„ ์„ ํƒํ•  ๋•Œ ์ƒ‰์ƒ ์„ ํƒ๊ธฐ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
https://github.com/godotengine/godot/blob/master/scene/gui/color_picker.cpp#L428

@MarianoGnu ๋งž์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ViewportTexture :: get_data ()๊ฐ€ GDScript์— ๋ฐ”์ธ๋”ฉ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ ๋ฟ์ด์ง€ ๋งŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰