๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Development Study/๐Ÿ’ป Win32API

Directx12 ์ดˆ๊ธฐํ™”

by eazuooz 2022. 7. 25.

Directx12 ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ

Directx12 Initialize (์ดˆ๊ธฐํ™”)

๋‹ค์ด๋ ‰ํŠธx12 ์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์—์…‹๋“ค์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ดํ”„๋ผ์ธ ์ดˆ๊ธฐํ™”.
    • Directx12 API ์˜ ๋””๋ฒ„๊ทธ๋ฅผ ๋„์™€์ค„ ๋””๋ฒ„๊ทธ ๊ณ„์ธต์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. 
    • ๋””๋ฐ”์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ปค๋งจ๋“œ ํ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์Šค์™‘์ฒด์ธ์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.
    • ๋ Œ๋”ํƒ€๊ฒŸ ๋ทฐ(RTV) ๋ฅผ  ๋งŒ๋“ค๊ธฐ์œ„ํ•œ Descriptor Heap ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ( ๋””์Šคํฌ๋ฆฝํ„ฐ ํž™์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์งˆ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)
    • ๋ Œ๋”ํƒ€๊ฒŸ๋ทฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • Command Allocator ํ• ๋‹น ( gpu ๋ช…๋ น์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น )  ๋ช…๋ น ํ• ๋‹น์ž๋Š” ๋ช…๋ ฅ ๋ชฉ๋ก(command list) ๋ฐ ๋ฒˆ๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Assets ์ดˆ๊ธฐํ™”
    • ๋นˆ ๋ฃจํŠธ ์„œ๋ช…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ๋ฃจํŠธ ์„œ๋ช…์€ ๊ทธ๋ž˜ํ”ฝ ํŒŒ์ดํ”„๋ผ์ธ์— ๋ฐ”์ธ๋”ฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉํ˜•ํƒœ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์…ฐ์ด๋” ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
    •  ๊ผญ์ง“์  ์ž…๋ ฅ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ํŒŒ์ดํ”„๋ผ์ธ ์ƒํƒœ ๊ฐœ์ฒด ์„ค๋ช…์„ ๋งŒ๋“  ๋‹ค์Œ, ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. [ํŒŒ์ดํ”„๋ผ์ธ ์ƒํƒœ ๊ฐœ์ฒด๋Š” ํ˜„์žฌ ์„ค์ •๋œ ๋ชจ๋“  ์…ฐ์ด๋” ๋ฐ ํŠน์ • ๊ณ ์ •ํ•จ์ˆ˜ ์ƒํƒœ ๊ฐœ์ฒด(์ž…๋ ฅ ์–ด์…ˆ๋ธ”๋Ÿฌ, ํ…Œ์…€๋ ˆ์ด์…˜, ๋ ˆ์Šคํ„ฐ๋ผ์ด์ € ๋ฐ ์ถœ๋ ฅ ๋ณ‘ํ•ฉ๊ธฐ)์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.]
    • ๋ช…๋ น ๋ชฉ๋ก์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค(command list)
    • ๋ช…๋ ฅ ๋ชฉ๋ก์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
    • ๊ผญ์ง“์  ๋ฒ„ํผ๋ฅผ ๋งŒ๋“ค๊ณ  ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • ๊ผญ์ง“์  ๋ฒ„ํผ view๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ํŽœ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. (gpu ์™€ cpu ๊ฐ„ ๋™๊ธฐํ™”์— ์‚ฌ์šฉ)
    • ์ด๋ฒคํŠธ ํ•ธ๋“ค์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • GPU ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊ฐ€์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

 

Update

๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„ ์ดํ›„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ชฏ๋А ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•„์š”์— ๋”ฐ๋ผ์„œ ์ƒ์ˆ˜, ๊ผญ์ง“์  , ์ธ๋ฑ์Šค ๋ฒ„ํผ ๋ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

Render

์ƒˆ๋กœ์šด ์›”๋“œ๋ฅผ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

  • ๋ช…๋ น๋ชฉ๋ก( command list.)๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.
    • ๋ช…๋ น ๋ชฉ๋ก ํ• ๋‹น์ž๋ฅผ ๋‹ค์‹œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    •  ๋ช…๋ น ํ• ๋‹น์ž์™€ ์—ฐ๊ฒฐ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์„ธ์š”.
    • ๋ช…๋ น ๋ชฉ๋ก์„ ๋‹ค์‹œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜ํ”ฝ ๋ฃจํŠธ ์„œ๋ช…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ( ํ˜„์žฌ ๋ช…๋ น ๋ชฉ๋ก์— ์‚ฌ์šฉํ•  ๊ทธ๋ž˜ํ”ฝ ๋ฃจํŠธ ์„œ๋ช…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค)
    • ๋ทฐํฌํŠธ์™€ ๊ฐ€์œ„ ์‚ฌ๊ฐํ˜• (์œˆ๋„์šฐ ํ™”๋ฉด ์˜์—ญ)์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ Œ๋”๋ง ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐฑ ๋ฒ„ํผ๋ฅผ ๋‚˜ํƒœ๋‚ด๋Š” ๋ฆฌ์†Œ์Šค ์žฅ๋ฒฝ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ( ๋ฆฌ์†Œ์Šค ์žฅ๋ฒฝ์€ ๋ฆฌ์†Œ์Šค ์ „ํ™˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)
    • ๋ช…๋ น์„ ๋ช…๋ ฅ ๋ชฉ๋ก์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
    • ๋ช…๋ น ๋ชฉ๋ก์ด ์‹คํ–‰๋œ ํ›„ ๋ฐฑ ๋ฒ„ํผ๊ฐ€ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ( ๋ฆฌ์†Œ์Šค ์žฅ๋ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค,)
    • ์ถ”๊ฐ€ ๊ธฐ๋ก์„ ์œ„ํ•ด ๋ช…๋ น ๋ชฉ๋ก์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
  • ๋ช…๋ น๋ชฉ๋ก์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.
  • GPU๊ฐ€ ์™„๋ฃŒ ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ( ํŽœ์Šค๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ™•์ธํ•˜์„ธ์š”.)

Destroy

์•ฑ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

  • GPU๊ฐ€ ์™„๋ฃŒ ๋ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. (ํŽœ์Šค๋ฅผ ์ตœ์ •์กฑ์œผ๋กœ ํ™•์ธํ•˜์„ธ์š”)
  •  ์ด๋ฒคํŠธ ํ•ธ๋“ค์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

 

 

 

๋Œ“๊ธ€