๋ชฉ๋ก์ ์ฒด ๊ธ (1104)
KoreanFoodie's Study

๊ฒฝ์ ์ ์์ ๋ฅผ ์ํด ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ๋ค์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์ฌํ ํฌ, ๋ถ์ํ, ๊ฒฝ์ ์ ์์ , ์์ฐ ๊ด๋ฆฌ, ๋ ๊ด๋ฆฌ, ์ ์ถ, ์ฃผ์, ๋ถ๋์ฐ, ํฌ์ ๋ฑ์ ๊ด์ฌ์ด ๋ง์ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ์ฑ ์ ๊ฒฝ์ฐ, ์ก๊ธฐ์ค๋ง ๋ฝ์์ ์ ๋ฌํด ๋๋ฆฌ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. 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์ด์ธ์ ํ์ ๊ณผ ์ฐ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ค...

์ด๋ฒ ์ํ์์๋ 'ํ์ดํ์ ๋๊ตฌ๋ค์ด๋ผ๋ ์ฑ ์ ๋ค๋ฃจ๋ฉฐ, ๊ฒฝ์ ์ ์์ ๋ฅผ ์ป์ ์ฌ๋๋ค์ด ๊ณตํต์ ์ผ๋ก ๊ผฝ๋ ๋น๊ฒฐ๊ณผ ๊ฐ์์ ๋ฌด๊ธฐ์ ๋ํด ๋ค๋ฃจ๊ณ ์ ํฉ๋๋ค. ๊ฒฝ์ ์ ์์ ๋ฅผ ์ป์, ์ ์์ ๊ฑฐ์ธ๋ค ๋ชจ๋ ์ฌ๋์ด ์ฑ๊ณตํ๋ ๊ฟ์ ๊พผ๋ค. ํ์ง๋ง ์ค์ ๋ก ๊ทธ๊ฒ์ ์ด๋ฃจ๋ ์ฌ๋์ ๋งค์ฐ ์์์ด๋ค. ์๋ง์ ์ฌ๋๋ค์ ๊ทธ๋ค์ ๋ณด๋ฉฐ ์ง๋ฌธ์ ๋์ง๋ค. '์ฑ๊ณตํ๋ ์ฌ๋์ ๋๋์ฒด ๋ฌด์์ด ๋ค๋ฅด๊ธฐ์ ์ ์์น์ ์ค ์ ์์์๊น?' ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ์ฑ๊ณตํ๊ฒ ๋ค๋ "๊ฟ"์ ๊ฟ ๋, ๊ฑฐ์ธ๋ค์ ์ฑ๊ณตํ๊ฒ ๋ค๋ "๋ชฉํ"๋ฅผ ์ธ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๋ค์ด ๊ฐ๊ณ ์๋ ํผํผํ ๊ฐ๊ณ ๋ฆฌ๋ฅผ ์ด์ฉํด, ์ฑ๊ณต์ด๋ผ๋ ์ ์๊น์ง ์ฐ์งํ๊ฒ ๊ธฐ์ด์ฌ๋ผ ๊ฐ๋ค. ์ฑ ์์ ์๊ฐํ๋ 'ํ์ดํ์ ๋๊ตฌ๋ค'์ด๋, ํฐ ์ฑ๊ณต์ ๊ฑฐ๋ ํ์ดํ๋ค์ด ์์ ์ ์ฑ๊ณต์ ์ผ๊ตฌ๊ธฐ ์ํด ์ฌ์ฉํ๋ '๊ฐ๊ณ ๋ฆฌ'์ธ ์ต๊ด๋ค, ๋ง์๊ฐ์ง ํน์ ๊ธฐ๋ฏน๋ค..
๋ณดํธ๋์ด ์๋ ๊ธ์ ๋๋ค.

์์ธ์ ๊ต์ก์ฒญ ์ ์๋์๊ด์ ์ฐ๋ฆฌ๋๋ผ์ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ์ ํ์์ผฐ๋ ์ฑ ์ค ํ๋์ธ "๋๋ ๋จ์ํ๊ฒ ์ด๊ธฐ๋ก ํ๋ค"๊ฐ ์๊ธธ๋ ๋ฌด๋ฃ๋ก ๋น๋ ค ์ฝ์ด ๋ณด์๋ค. ์ฌ์ค ํ์์๋ ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ๋๊ฒฝํ๋ ํฐ๋ผ, ์๋นํ ์๋ฟ๋ ๋ถ๋ถ์ด ๋ง์๋ ์ฑ ์ด์๋ค. ์ฌ์ค ํต์ฌ์ ๊ฐ๋จํ๋ค. 1. ๋ฌผ๊ฑด์ 2๋ฐฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ํด์ 2๋ฐฐ ํ๋ณตํด์ง์ง ์๋๋ค๋ ๊ฒ 2. ๋ฌผ๊ฑด์ ์ฌ๊ณ ๋ชจ์ผ๋ฉด์ ๋ฌผ๊ฑด์ด ๊ณต๊ฐ๊ณผ ๋ ์์ ์ ์์ ํ๊ฒ ๋๋ค๋ ๊ฒ 3. ๋ฌผ๊ฑด์ ๋นผ์๊ธฐ๋ ์๊ฐ๊ณผ ์๋์ง๋ฅผ ์จ์ ํ ๋ด ์์ ์๊ฒ ์์ ์ ์๋ค๋ ๊ฒ ์ด ์ธ๊ฐ์ง๋ก ์์ฝํด๋ณผ ์ ์๊ฒ ๋ค. ์, ๋ฌผ๋ก ์ธ๋ฐ์๋ ์ง์ถ์ด ์ค์ด๋ค๊ณ , ์ํ์ด ์กฐ๊ธ ๋ ์ฌ์ ๋ก์ ์ง๋ ๋ถ์์ ์ ์๊ฒ ๋ค. ๋ค๋ง, ๋ฏธ๋๋ฉ๋ฆฌ์ฆ์ ์ ์ฝ์ด ์๋ '๊ผญ ํ์ํ ์์ ๋ฅผ ํ๋ ๊ฒ'์ด๋ค. ๋ผ์ดํ์คํ์ผ ๋ด์ง๋ ์ฒ ํ์ ๊ฐ๊น์ด ๊ฒ์ด๋ผ๊ณ ํด์ํ๋ ๊ฒ์ด ์์ฐ์ค..

'DirectX 12๋ฅผ ์ด์ฉํ 3D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ'์ ์ฝ์ผ๋ฉฐ ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ค์ํ ๋ถ๋ถ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. 1. ๋ฒกํฐ์ ๊ฐ๋ ๊ณผ DirectXMath ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒกํฐ ์์ ๋์ด์ผ ํ ๊ฐ๋ ๋ค : - ์ง๊ต ํฌ์ : projection์ด๋ผ๊ณ ํ๋ ์ด ๊ฐ๋ ์, ๊ทธ๋ฅ ๊ธฐ๋ณธ์ด๋ค. proj(w)v๋ผ๊ณ ํ๋ฉด v๋ฒกํฐ ์ค w๋ฒกํฐ ๋ฐฉํฅ์ ์์๋ฅผ ์ถ์ถํ ์ ์๋ค. - ๊ทธ๋ ์๋ฏธํธ ์ง๊ตํ (gram schmidt orthogonalization) ๊ทธ๋ ์๋ฏธํธ ์ง๊ตํ๋ ์ ํ๋์ํ์ ๋ค์ผ๋ฉด ๋ชจ๋ฅผ ์๊ฐ ์์ ์ ๋๋ก ์ค์ํ ์ ๋ฆฌ์ด๋ค. ๊ฐ๋จํ ๋งํด์, N์ฐจ์ ๊ณต๊ฐ์ ๋ฒกํฐ๋ฅผ ๊ฐ ์ฐจ์์ ๋ํํ๋ ๋ฒกํฐ๋ค๋ก ๋ถํด(decomposition)ํ๋ ๊ฒ์ด๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ด๋ ์ฆ๋ช ์ ์๋ ์ฌ์ง์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค. - 2์ฐจ์ ์ ์ฌ ์ธ์ : ์ฌ..

DirectX 11 2D ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ - 15. UV ์ขํ ์กฐ์๊ณผ Sampler State์ค์ UV ์ขํ ์กฐ์ํ๊ธฐ - UV ์ขํ๋ฅผ ์์๋ก ๋๋ฆด ์ ์์ง๋ง, ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ๋๋ ๋ฐ๋์ 0~1 ๋ฒ์๋ก ๋ง์ถฐ์ผ ํ๋ค. Sampler State ์ค์ ๊ณผ ์ธํ ํ๊ธฐ - Filter์์๋ ์ธ ๊ฐ์ง๋ง ๊ธฐ์ต MIN - ์ถ์, Mag - ํ๋, MIP - ๋ฐ๋งต - Point์์๋ ๋์ด์ง๋ ๋ฏํ ์ด๋ฏธ์ง, Linear๋ ๋ถ๋๋ฌ์ด ์ด๋ฏธ์ง๋ฅผ ์ป์ ์ ์๋ค. - CLAMP, WRAP ๋ฑ์ Address Mode๋ฅผ ํ์ฉํ์ฌ ํ์ฅ๋ UV ๊ณต๊ฐ์ ์ฒ๋ฆฌํ ์ ์๋ค. Mipmap ๋ณด์ถฉ์ค๋ช Execute.cpp Sampler State๋ฅผ ์ค์ ํด ์ฃผ์. //Create Sampler State { D3D11_SAMPLER_DESC de..