C++๋ก ๋ง๋๋ ๊ฒ์ ์์ง ํ๋ ์์ํฌ (์์ฝ๋ฐ๊ณผ ์ํ ๊ฒ์์ผ๋ก ๋ฐฐ์ฐ๋ ์์ง ๊ตฌ์กฐ)
๊ฒ์ ์์ง์ ์ดํดํ๊ณ ์ถ๋ค๋ฉด, ์ง์ ๋ง๋ค์ด๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ๋น ๋ฆ ๋๋ค. C++๋ก ์ฝ์ ๊ฒ์ ์์ง์ ํต์ฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๊ณ , ์์ฝ๋ฐ๊ณผ ๋นํ ์ํ ๊ฒ์๊น์ง ์์ฑํ๋ ํ๋ก์ ํธํ ๊ฐ์์ ๋๋ค. ์ธ๋ฆฌ์ผ๊ณผ ์ ๋ํฐ ์์ง์ ๊ตฌ์กฐ๋ฅผ ๊น์ด ์ดํดํ ์ ์๋ ๊ด์ ์ ์ ๊ณตํฉ๋๋ค.
์๊ฐ์ 75๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ
๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๊ฐ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ ์๋ฆฌ์ฆ ๊ธ์ ๊ณต์ ํฉ๋๋ค.
โ
Vertex Shader, Rasterizer, Pixel Shader ๊ฐ์ ์ฉ์ด๋ฅผ ๋จ์ ๊ธฐ๋ฅ ์ค๋ช ์ด ์๋๋ผ, GPU๊ฐ ์ ์ด๋ฐ ๊ตฌ์กฐ๋ก ๋ฐ์ ํ๋์ง๋ฅผ ์ค์ฌ์ผ๋ก ์ค๋ช ํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
โ
๋ํ Draw Call๊ณผ CPU/GPU ๋ณ๋ชฉ ๊ตฌ์กฐ, ๊ฒ์ ์์ง ์ต์ ํ๊น์ง ์ฐ๊ฒฐํด์ ์ ๋ฆฌํ์ต๋๋ค.โ
DirectX, OpenGL, Vulkan, Unity, Unreal Engine ๋ ๋๋ง ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถํ์๋ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
โ
https://ronniej.sfuhost.com/rendering-pipeline-series-guide/
์๋ ํ์ธ์ ์ฅ์ธ์ค์ ๋๋ค!
๊ฐ์์์ ๋ค๋ค๋ RTTI(TypeId ๊ธฐ๋ฐ) ๋ด์ฉ์ ๋ฐํ์ผ๋ก, ํ ๋จ๊ณ ๋ ํ์ฅํ ์ ๋ฆฌ ๊ธ๊ณผ ์์ ์ฝ๋๋ฅผ ๊ณต์ ๋๋ฆฌ๋ ค๊ณ ๊ธ์ ์์ฑํด๋ด ๋๋ค.
๊ฐ์์์๋ ํ์ ์ ๊ตฌ๋ถํ๊ณ ์บ์คํ ํ๋ ๊ตฌ์กฐ๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ ๋ฐ ์ง์คํ๋ค๋ฉด, ์ด๋ฒ ๊ธ์์๋ ๊ทธ ํ๋ฆ์ ์ด์ด์
dynamic_cast๋ถํฐ ์์ํด ์ปค์คํ RTTI, ๊ทธ๋ฆฌ๊ณ ์ธ๋ฆฌ์ผ ์์ง์์ ์ฌ์ฉํ๋ ํ์ ์์คํ ๊ฐ๋ ๊ณผTSubclassOf์ฒ๋ผ ํ์ ์ ๋ณด๋ฅผ ํ์ฉํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ตฌ์กฐ๊น์ง ์ ๋ฆฌํด๋ดค์ต๋๋ค.ํนํ ๊ฐ์์์ ๊ตฌํํ ๊ตฌ์กฐ๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ํ์ฅ๋ ์ ์๋์ง, ๊ทธ๋ฆฌ๊ณ ์์ง ๋ด๋ถ์์๋ ์ด๋ค ์์ผ๋ก ํ์ฉ๋๋ ์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋๋ก ๊ตฌ์ฑํ์ต๋๋ค.
๊ด๋ จ ๊ธ์ ์๋ ๋งํฌ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๐https://ronniej.sfuhost.com/cpp-rtti-guide/๋ํ ์ปค์คํ RTTI๋ฅผ ๊ตฌํํ๋ ๋ถ๋ถ๋ถํฐ ๋ธ๋ก๊ทธ ๊ธ์ ํฌํจ๋ ์ฝ๋๋ ๋ชจ๋ ์ง์ ์คํํด๋ณผ ์ ์๋๋ก ์์ ํ๋ก์ ํธ๋ก ์ ๋ฆฌํด๋์์ต๋๋ค.
๐https://github.com/hamtol2/Cpp_RTTI/๊ฐ์ ๋ด์ฉ์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ฑฐ๋, ์กฐ๊ธ ๋ ๊น๊ฒ ์ดํดํ๊ณ ์ถ์ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค ๐






