๋ชฉ๋ก์ ์ฒด ๊ธ (1099)
KoreanFoodie's Study
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 4-4. ์๊ฐ ์ธก์ ๊ณผ ์ ๋๋ฉ์ด์ (ํ์ด๋จธ, GameTimer ํด๋์ค) ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : 1. ์ฑ๋ฅ ํ์ด๋จธ ์ ๋ฐํ ์๊ฐ ์ธก์ ์ ์ํด, ์ด ์ฑ ์ ์์ ๋ค์ Windows๊ฐ ์ ๊ณตํ๋ ์ฑ๋ฅํ์ด๋จธ(perfomance timer)๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ์ฑ๋ฅ ์นด์ดํฐ(performance counter)๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค(Windows.h ๋ฅผ include). ์ฑ๋ฅ ํ์ด๋จธ์ ์๊ฐ ์ธก์ ๋จ์๋ '์ง๋๊ฐ ํด๋ญ ํฑ(tick)'๋ค์ ๊ฐ์(count)์ด๋ค. ์ฑ๋ฅ ํ์ด๋จธ๋ก๋ถํฐ ํฑ ์ ๋จ์์ ํ์ฌ ์๊ฐ์ ์ป์ ๋์๋ ๋ค์๊ณผ ๊ฐ์ด QueryPerformanceCounter ํจ์๋ฅผ ์ฌ์ฉํ๋ค. __int64 currTim..
๊นํ์ ํตํด ๋ชจ๋ C++๋ฅผ ์ค์ฌ์ผ๋ก, ๋ชจ๋ C++์ ๊ธฐ์ด ๋ด์ฉ ์ค, ๊ธฐ์ตํ๋ฉด ์ข์ ๋ถ๋ถ๋ง ๊ฐ์ถ๋ ค Github์ ์ ๋ฆฌ์ค์ ๋๋ค. ์์ ์์ค ์ฝ๋๋ ๋ชจ๋์ ์ฝ๋์ ์น์ด๋จน๋ C++ ๊ฐ์ข๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค. ์ ๋ง ์ข์ ์์ค๋ ๊ผญ ํ ๋ฒ ๋ณด์๋ผ๊ณ ๊ถํ๊ณ ์ถ์ต๋๋ค. CPP Review CPP Review following lectures from here, Effective C++ and Effective Modern C++. Also cover other references & codes 1. Namespace 2. References Reference is a nickname. Therefore it cannot be used alone, it needs original name to exist! Can't assi..
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 4-3. Direct3D ์ด๊ธฐํ (ID3D12Device, Fence, 4X MSAA ์ ๊ฒ ๋ฑ) Direct3D ์ด๊ธฐํ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ค๋ก ๊ตฌ์ฑ๋๋ค. 1. D3D12CreateDevice ํจ์๋ฅผ ์ด์ฉํด์ ID3D12Device๋ฅผ ์์ฑํ๋ค. 2. ID3D12Fence ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ ์๋ค์ ํฌ๊ธฐ๋ฅผ ์ป๋๋ค 3. 4X MSAA(Multisample anti-aliasing) ํ์ง ์์ค ์ง์ ์ฌ๋ถ๋ฅผ ์ ๊ฒํ๋ค. 4. ๋ช ๋ น ๋๊ธฐ์ด๊ณผ ๋ช ๋ น ๋ชฉ๋ก ํ ๋น์, ๊ทธ๋ฆฌ๊ณ ์ฃผ ๋ช ๋ น ๋ชฉ๋ก์ ์์ํ๋ค. 5. ๊ตํ ์ฌ์ฌ์ ์์ ํ๊ณ ์์ฑํ๋ค. 6. ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ํ ์์ ์ ํ๋ค์ ์์ฑํ๋ค. 7. ํ๋ฉด ..
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 4-2. Direct3D ๊ธฐ์ด : CPU์ GPU์ ์ํธ์์ฉ , ๋ช ๋ น ๋๊ธฐ์ด, CPU/GPU ๋๊ธฐํ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : ๋ช ๋ น ๋๊ธฐ์ด๊ณผ ๋ช ๋ น ๋ชฉ๋ก CPU๋ GPU์ ์ํธ์์ฉํ๋ฉฐ ๊ทธ๋ํฝ์ ๊ทธ๋ ค์ค๋ค. ์ฐ๋ฆฌ๋ GPU์ CPU๊ฐ ๊ฐ๊ฐ ์ฌ์ง ์๊ณ ์ด์ฌํ ์ผํ๊ธฐ๋ฅผ ์ํ๋ค. CPU/GPU ์ฌ์ด์๋ ๋๊ธฐํ๊ฐ ํ์ํ์ง๋ง, ๋๊ธฐํ๋ ๋ณ๋ ฌ์ฑ์ ๋ง์น ์ ์๋ค. ์ฆ, ๋ช ๋ น ๋๊ธฐ์ด์ด ๊ฝ ์ฐจ CPU๊ฐ ๋๊ฑฐ๋ ๋ช ๋ น ๋๊ธฐ์ด์ด ๋น์ด ์์ด GPU๊ฐ ๋ ธ๋ ์ํฉ์ ๋ฐฉ์งํด์ผ ํ๋ค. Direct3D 12์์ ๋ช ๋ น ๋๊ธฐ์ด์ ๋ํํ๋ ์ธํฐํ์ด์ค๋ ID3D12CommandQueue์ด๋ค. ์ด ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๋ ค๋ฉด ๋๊ธฐ์ด์ ์์ ํ..
Memento Mori ๋น์ ์ด '์ง์ง ๋ง์ง'์ ์ฐพ๋๋ค๋ฉด ๊ธฐ์ตํด์ผ ํ ๋ ๊ฐ์ง๊ฐ ์๋ค. 1. ํ๊ตญ์ธ์ ๊ฐ์ฑ์ ๋ฏธ์ณ์๋ค. 2. ๊ธฐ๋ํ๋ฉด ์ค๋งํ๋ค. ๊ฐ์ฑ์ด ์ง์ง ๋ญ๊ธธ๋. ์ฌ๋๋ค์ ์ ๋ณ ๊ฑฐ ์๋ ๋ฐ๊ฐ๋ฃจ ๋ฉ์ด๋ฆฌ์ ๋์ ๋ด๋์ง๋ ๊ฑธ๊น. ๋น์ทํ ์์์ด๋ผ๋ ์ ์์ ๊ตด๊ณก์ ๋ชธ๊ฐ์ด ์ ๊ทธ๋ฆฌ ๋ฌ๋ผ์ง๋ ๊ฑธ๊น. ์, ๋ฌผ๋ก ๊ณผํ์ง ์์ ์์ํ ์กฐ๋ช ์ด ๋น ์ ธ์๋ ์๋๊ฒ ๋ค. ๊ฐ์ฑ์ด๋ ๊ฒ ์ฐธ ์ค๋ฌํ๋ค. ํฉ๋ฆฌ์ ์ผ๋ก๋ ๋น์ต ์ดํดํ ์๊ฐ ์๋ค. ๋จ๋ํ ๊ตญ๋ฐฅ์ ๋จน๊ณ '์ ์ข๋ค~'๋ฅผ ์ธ์น๋ ์์ฌ๊ฐ ๋์ด๋ฒ๋ฆฐ ๋์๊ฒ ๋จ์ ์ ํ์ง๋ ์ดํดํ ์ ์๋ ๊ฐ์ฑ์ด๋ผ๋ ๊ฐ๋ ์ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์์ฉํ๋ ๊ฒ ๋ฟ์ด๋ค. ๋๊ตฐ๊ฐ ๊ฐ์์ ๋ฌผ์ด๋ณด๋ฉด ๋จผ ์ฐ์ ๋ฐ๋ผ๋ณด๋ฏ ์์ ์ ๋๋ฆฌ๋ฉฐ ๋ฏธ์๋ฅผ ์ง๋ ๊ฒ ๋ฐ์. ๋ถ์๊ธฐ๋ฅผ ๊นจ๊ณ ์ถ์ง๋ ์์ผ๋๊น. ...๋ผ๊ณ ๋งํ์ง๋ง, ์ฌ์ค ๋๋ ์์ ๊ฐ..
๊ฒฝ์ ์ ์์ ๋ฅผ ์ํด ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ๋ค์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์ฌํ ํฌ, ๋ถ์ํ, ๊ฒฝ์ ์ ์์ , ์์ฐ ๊ด๋ฆฌ, ๋ ๊ด๋ฆฌ, ์ ์ถ, ์ฃผ์, ๋ถ๋์ฐ, ํฌ์ ๋ฑ์ ๊ด์ฌ์ด ๋ง์ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ์ฑ ์ ๊ฒฝ์ฐ, ์ก๊ธฐ์ค๋ง ๋ฝ์์ ์ ๋ฌํด ๋๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. 1์ฅ : ์ด์ ๋ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ผ ๋์ ์ธ์ ๋ ์ฐ๋ฆฌ๊ฐ ๋ถ์ฌํ๋ ๋งํผ์ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค. ๋ ๋ฌธ์ ๋ก ๊ณค๋์ ๊ฒช๋ ๋์ ๋์ ํ์ ์ด์ ์ค์ํ ๊ฒ์ด ๋์ด๋ฒ๋ฆฐ๋ค. ๊ฐ์น์ ๋ชฉํ๊ฐ ์ผ์นํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐ๋ฆฌ๋ ์์ผ๋ก ๋์๊ฐ ์ ์๋ค. ๋๊ด์ฃผ์๋ ๋ชจ๋ ์ผ์ ๊ธ์ ์ ์ธ ๋ฉด๋ง ๋ณด๊ฒ ํ๋ค. ์์ ๊ฐ์ ๊ทธ๋ฌ๋ ์ด๋์ด ๋ฉด๊น์ง๋ ๊ฐ๋นํ ์ ์๋ค๋ ํ์ ์ ์ค๋ค. ์์ ๊ฐ์ด ์๋ ์ฌ๋์ ๊ณผ๊ฑฐ ๊ฒฝํ์ ํ ๋๋ก '๋๋ ๋ฌธ์ ์์ด' ๋ผ๊ณ ์ค์ค๋ก ๋งํ ์ ์๋ ์ฌ๋์ด๋ค. ๊ฒฝ์ ์ ์ด๋ ค์์..
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 4-1. Direct3D ๊ธฐ์ด : COM, ํ ์ค์ณ ํ์, ๊ตํ์ฌ์ฌ๊ณผ ํ์ด์ง ์ ํ, ๊น์ด ๋ฒํผ๋ง, ๋ค์ค ํ๋ณธํ, DXGI, ์์ฃผ์ฑ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : COM(Component Object Model) COM์ DirectX์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ ๋ฆฝ์ฑ๊ณผ ํ์ ํธํ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. COM ๊ฐ์ฒด๋ฅผ C++ ํด๋์ค๋ก ๊ฐ์ฃผํ๊ณ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค. ํ๋ก๊ทธ๋๋จธ๋ COM ์ธํฐํ์ด์ค์ ํจ์๋ค๊ณผ ๋ฉ์๋๋ฅผ ์ด์ฉํ๊ธฐ๋ง ํ๋ค. (new๋ก ์์ฑํ ์ผ์ด ์๋ค๋ ๋ป์ด๋ค.) ๋ํ delete๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ๊ฒ์ด ์๋๋ผ release๋ฅผ ํตํด ๋ ์ด์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ง ์์์ ๋ช ์ํด ์ฃผ์ด์ผ ํ๋ค. ..
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 3. ์ ํ๋ณํ, ์ํ๋ณํ, ์ขํ ๋ณํ, DirectXMath ๋ณํ ํจ์ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : ์ ํ๋ณํ ์ ํ๋ณํ์ ๋ฒกํฐ๋ค ์ฌ์ด์ ๊ฒฐํฉ ์ฐ์ฐ์ผ๋ก ์ดํดํ๋ฉด ๋๋ค. u + v๋ ๋ฒกํฐ๋ผ๋ฆฌ์ ํฉ์ด๊ณ , k * v๋ ๋ฒกํฐ v์ ์ค์นผ๋ผ ๊ฐ k๋ฅผ ๊ณฑํ scaling์ด๋ค. ํ์ ๋ฒกํฐ v๋ฅผ ์ถ n์ ๋ํด ์ต์ ํ๋ค๊ณ ํ์. ์ด๋ฌํ ๋ณํ์์ ํ์ ๊ฐ์ n์ ๋ด๋ ค๋ค๋ณด๋ ๋ฐฉํฅ(์ฆ, n์ ๋ฐ๋ ๋ฐฉํฅ)์ ๊ธฐ์ค์ด๋ก ์๊ณ๋ฐฉํฅ์ผ๋ก ์ธก์ ํ๋ค. ๋ํ ||n|| = 1 ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค. ์ฐ์ v๋ฅผ ๋ ๋ถ๋ถ์ผ๋ก ๋ถํดํ๋ค. ํ๋๋ n์ ํํํ ๋ถ๋ถ์ด๊ณ ๋ ํ๋๋ n์ ์์ง์ธ(์ง๊ต) ๋ถ๋ถ์ด๋ค. ํํํ ๋ถ๋ถ์ ๊ทธ๋ฅ proj(v)์ด๋ค...
'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 2. DirectXMath ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ฌ ๋ค๋ฃจ๊ธฐ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : ๊ฐ๋จํ ํ๋ ฌ ์ฐ์ฐ๋ค (ํ๋ ฌ์ ๊ณฑ, ์ญํ๋ ฌ, ์ฌ์ธ์, Transpose, Cramer's Rule ๋ฑ)์ ๋ํ ์ค๋ช ์ ์ฌ๊ธฐ์์๋ ๋ค๋ฃจ์ง ์๋๋ค. ๋ฒกํฐ์ ํ๋ ฌ ์ฐ์ฐ์ ๋ํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ์ฐธ๊ณ ํ๋๋ก ํ์. ๋์ ๊ผญ ๊ธฐ์ตํด์ผ ํ ๊ฒ ํ ๊ฐ์ง๋ง ์ง๊ณ ๋์ด๊ฐ๋ ค ํ๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ : ์ญํ๋ ฌ๊ณผ ํ๋ ฌ์์ ๊ธฐํํ์ ์ธ ์๋ฏธ ๋ ๋ฒกํฐ๋ก ์ด๋ฃจ์ด์ง ํ๋ ฌ์ ํ๋ ฌ์(determinant)์ ํํ์ฌ๋ณํ์ ๋์ด์ด๋ค. ์ด๋ฌํ ํํ์ฌ๋ณํ์ ๋จ์๋ฒกํฐ ๋ ๊ฐ๋ก ์ด๋ฃจ์ด์ง ์ ์ฌ๊ฐํ์ผ๋ก ๋ณํํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์(Identity Matrix ๊ฐ์ ๋ ์..
double square_root(double x) noexcept {...} '๋ชจ๋ C++ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. ๋ชจ๋ C++ ์ ๋ฌธ 1 - C++ ๊ธฐ์ด (์ด๊ธฐํ, ๋ฆฌํฐ๋ด, ์์ธ, ํฌ์ธํฐ) ๋ณ์ ๋ณ์๋ ๊ฐ๋ฅํ ๋ฆ๊ฒ ์ ์ธํ๋ผ. ์ผ๋ฐ์ ์ผ๋ก ์ด๊ธฐํ๋ฅผ ํ๊ธฐ ์ ์๋ ์ ์ธํ์ง ์๋ ๊ฒ์ด ์ข๋ค. ๋ฆฌํฐ๋ด ๊ฐ ๋ค์ ๋ฌธ์๋ฅผ ๋ถ์ฌ ๋ฆฌํฐ๋ด์์ ํ์ํ ์ ์๋ค. ๋ฆฌํฐ๋ด ํ์ 2 int 2u unsigned 2l long 2ul unsigned long 2.0 double 2.0f float 2.0l long double ์ ์ฉํจ : ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณต์์๋ฅผ ์ํ ํ์ ์ ์ ๊ณตํ๋ค. std::complex z(1.3, 2.4), z2; ๋ถํํ๊ฒ๋ float์ด์ธ์ ํ์ ๊ณผ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ค...