{"id":1654,"date":"2026-03-26T22:41:37","date_gmt":"2026-03-26T22:41:37","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1654"},"modified":"2026-08-31T07:32:36","modified_gmt":"2026-08-31T07:32:36","slug":"directx-9-%ea%b0%9c%eb%b0%9c-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1654","title":{"rendered":"DirectX 9 \uac1c\ubc1c \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">DirectX 9\ub294 \uc624\ub798\ub41c \uadf8\ub798\ud53d API\uc9c0\ub9cc \uac8c\uc784 \uac1c\ubc1c\uacfc 3D \ub80c\ub354\ub9c1\uc758 \uae30\ubcf8 \uad6c\uc870\ub97c \uc774\ud574\ud558\uae30\uc5d0\ub294 \uc88b\uc740 \uae30\uc220\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uc998\uc740 DirectX 11, DirectX 12, Vulkan \uac19\uc740 API\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc9c0\ub9cc <code>Device<\/code>, <code>Vertex Buffer<\/code>, <code>Index Buffer<\/code>, <code>Texture<\/code>, <code>Shader<\/code>, <code>Render State<\/code> \uac19\uc740 \uac1c\ub150\uc740 \uc774\ud6c4 \uadf8\ub798\ud53d API\uc5d0\uc11c\ub3c4 \ud615\ud0dc\ub9cc \ub2ec\ub77c\uc9c8 \ubfd0 \uacc4\uc18d \ub4f1\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\ub97c \uacf5\ubd80\ud560 \ub54c \uc911\uc694\ud55c \uac83\uc740 API \ud568\uc218\ub97c \ub9ce\uc774 \uc678\uc6b0\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uac8c\uc784\uc758 \ub370\uc774\ud130\uac00 \uc5b4\ub5bb\uac8c GPU\ub85c \uc804\ub2ec\ub418\uace0, \ub80c\ub354\ub9c1 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uac70\uccd0 \ud654\uba74\uc5d0 \ucd9c\ub825\ub418\ub294\uac00<\/strong>\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \ud575\uc2ec\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game -&gt; Direct3D 9 -&gt; Device -&gt; GPU -&gt; Back Buffer -&gt; Present -&gt; \ud654\uba74\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DirectX\ub780<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX\ub294 Windows \ud658\uacbd\uc5d0\uc11c \uac8c\uc784\uacfc \uba40\ud2f0\ubbf8\ub514\uc5b4 \ud504\ub85c\uadf8\ub7a8\uc744 \uac1c\ubc1c\ud558\uae30 \uc704\ud55c API \uc9d1\ud569\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\ud53d\ub9cc \ub2f4\ub2f9\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \uc785\ub825, \uc0ac\uc6b4\ub4dc \ub4f1 \ub2e4\uc591\ud55c \uae30\ub2a5\uc744 \ud3ec\ud568\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\uc911 3D \uadf8\ub798\ud53d\uc744 \ub2f4\ub2f9\ud558\ub294 \ud575\uc2ec API\uac00 <code>Direct3D<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 <code>Direct3D 9<\/code>\ub97c \uc774\uc6a9\ud574 GPU\ub97c \uc81c\uc5b4\ud558\uace0 3D \uc7a5\uba74\uc744 \ub80c\ub354\ub9c1\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game -&gt; DirectX -&gt; Direct3D -&gt; GPU\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\ud53d \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uacf5\ubd80\ud560 \ub54c\ub294 DirectX \uc804\uccb4\ubcf4\ub2e4 Direct3D\uc758 \ub80c\ub354\ub9c1 \uad6c\uc870\ub97c \uba3c\uc800 \uc774\ud574\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Direct3D Device<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c \uc911\uc2ec\uc774 \ub418\ub294 \uac1d\uccb4\uac00 <code>IDirect3DDevice9<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Device\ub294 \ub80c\ub354\ub9c1 \uc791\uc5c5\uc744 GPU\uc5d0 \uc804\ub2ec\ud558\uae30 \uc704\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IDirect3DDevice9* device;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74\uc744 \uc9c0\uc6b0\uace0, \ub9ac\uc18c\uc2a4\ub97c \uc124\uc815\ud558\uace0, Shader\uc640 Render State\ub97c \uc9c0\uc815\ud558\uace0, \uc2e4\uc81c Draw \ud638\ucd9c\uc744 \uc218\ud589\ud558\ub294 \uc791\uc5c5\uc774 \ubaa8\ub450 Device\ub97c \ud1b5\ud574 \uc774\ub8e8\uc5b4\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \ub80c\ub354\ub9c1 \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BeginScene -&gt; Clear -&gt; Set State -&gt; Set Resource -&gt; Draw -&gt; EndScene -&gt; Present\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Device \uc790\uccb4\uac00 \uac8c\uc784\uc758 \ubaa8\ub4e0 \uac83\uc744 \uad00\ub9ac\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ud655\ud558\uac8c\ub294 <strong>\ud604\uc7ac \ub80c\ub354\ub9c1\uc5d0 \ud544\uc694\ud55c GPU \uc0c1\ud0dc\uc640 \ub9ac\uc18c\uc2a4\ub97c \uc124\uc815\ud558\uace0 Draw \uba85\ub839\uc744 \uc804\ub2ec\ud558\ub294 \uc911\uc2ec \uc778\ud130\ud398\uc774\uc2a4<\/strong>\ub77c\uace0 \uc774\ud574\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Game Loop<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784\uc740 \ub80c\ub354\ub9c1\uc744 \ud55c \ubc88\ub9cc \uc218\ud589\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc785\ub825\uc744 \ucc98\ub9ac\ud558\uace0 \uac8c\uc784 \uc0c1\ud0dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud55c \ub2e4\uc74c \ud604\uc7ac \uc0c1\ud0dc\ub97c \ud654\uba74\uc5d0 \ub80c\ub354\ub9c1\ud558\ub294 \uacfc\uc815\uc744 \uacc4\uc18d \ubc18\ubcf5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Input -&gt; Update -&gt; Render -&gt; Input -&gt; Update -&gt; Render -&gt; \ubc18\ubcf5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Render \ub2e8\uacc4\uc5d0\uc11c\ub294 \ub2e4\uc2dc Direct3D\uc758 \ub80c\ub354\ub9c1 \uacfc\uc815\uc774 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Render -&gt; BeginScene -&gt; Clear -&gt; Set State -&gt; Draw -&gt; EndScene -&gt; Present\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \uac8c\uc784\uc758 \ud55c \ud504\ub808\uc784\uc740 \ub2e4\uc74c \uad6c\uc870\ub85c \uc774\ud574\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game Loop -&gt; Input -&gt; Update -&gt; Render -&gt; Present -&gt; \ub2e4\uc74c Frame\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Vertex<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">3D \uadf8\ub798\ud53d\uc758 \uac00\uc7a5 \uae30\ubcf8\uc801\uc778 \ub370\uc774\ud130\uac00 <code>Vertex<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vertex\ub294 \ud558\ub098\uc758 \uc815\uc810\uc744 \ud45c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct Vertex\n{\n    float x;\n    float y;\n    float z;\n};\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0bc\uac01\ud615 \ud558\ub098\ub97c \ub9cc\ub4e4\ub824\uba74 \uc815\uc810 \uc138 \uac1c\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex 0 -&gt; Vertex 1 -&gt; Vertex 2 -&gt; Triangle\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uac8c\uc784\uc5d0\uc11c\ub294 \uc704\uce58\ub9cc \uc800\uc7a5\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc95\uc120, \uc0c9\uc0c1, UV \ub4f1\uc758 \ub370\uc774\ud130\uac00 \ud568\uaed8 \ub4e4\uc5b4\uac08 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>struct Vertex\n{\n    float x, y, z;\n    float nx, ny, nz;\n    float u, v;\n};\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Vertex\ub294 \ub2e8\uc21c\ud55c \uc88c\ud45c \ud558\ub098\uac00 \uc544\ub2c8\ub77c <strong>GPU\uac00 \uc815\uc810\uc744 \ucc98\ub9ac\ud558\ub294 \ub370 \ud544\uc694\ud55c \uc785\ub825 \ub370\uc774\ud130<\/strong>\ub77c\uace0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Vertex Buffer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vertex \ub370\uc774\ud130\ub97c GPU\uac00 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \uc800\uc7a5\ud558\ub294 \uac83\uc774 Vertex Buffer\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 <code>IDirect3DVertexBuffer9<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Data -&gt; Vertex Buffer -&gt; GPU\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9ce\uc740 \uc815\uc810\uc744 \ub9e4\ubc88 \uac1c\ubcc4\uc801\uc73c\ub85c \uc804\ub2ec\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \ubc84\ud37c\uc5d0 \uc800\uc7a5\ud574 \ub450\uace0 \ud544\uc694\ud560 \ub54c GPU\uac00 \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU -&gt; Vertex Buffer -&gt; Vertex Processing\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Index Buffer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">3D \ubaa8\ub378\uc5d0\uc11c\ub294 \uac19\uc740 Vertex\ub97c \uc5ec\ub7ec \uc0bc\uac01\ud615\uc774 \uacf5\uc720\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c Vertex \ub370\uc774\ud130\ub97c \uc911\ubcf5\ud574\uc11c \uc800\uc7a5\ud558\ub294 \ub300\uc2e0 Index\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Buffer -&gt; \uc2e4\uc81c Vertex \ub370\uc774\ud130\nIndex Buffer -&gt; \uc0ac\uc6a9\ud560 Vertex \ubc88\ud638\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0ac\uac01\ud615\uc744 \ub450 \uac1c\uc758 \uc0bc\uac01\ud615\uc73c\ub85c \ud45c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertices -&gt; 0, 1, 2, 3\nIndices -&gt; 0, 1, 2 -&gt; 2, 1, 3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 \uacf5\uc720\ub418\ub294 \uc815\uc810\uc744 \uc911\ubcf5 \uc800\uc7a5\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Buffer + Index Buffer -&gt; Triangle\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub378\uc758 \uaddc\ubaa8\uac00 \ucee4\uc9c8\uc218\ub85d Index Buffer\uc758 \uc758\ubbf8\uac00 \ucee4\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Primitive<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GPU\ub294 Vertex\ub97c \uadf8\ub300\ub85c \ud654\uba74\uc5d0 \uadf8\ub9ac\ub294 \uac83\uc774 \uc544\ub2c8\ub77c Primitive\ub77c\ub294 \uae30\ubcf8 \ub3c4\ud615 \ub2e8\uc704\ub85c \ud574\uc11d\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 Primitive\uac00 Triangle\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; Primitive -&gt; Triangle\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 Draw API\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>device-&gt;DrawPrimitive(...);\ndevice-&gt;DrawIndexedPrimitive(...);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ubd80\ubd84\uc758 3D \ubaa8\ub378\uc740 \uacb0\uad6d \uc218\ub9ce\uc740 \uc0bc\uac01\ud615\uc758 \uc9d1\ud569\uc73c\ub85c \ud45c\ud604\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mesh -&gt; Vertex \/ Index -&gt; Triangle -&gt; Rasterization -&gt; Pixel\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Vertex Declaration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GPU\uac00 Vertex Buffer\uc758 \ub370\uc774\ud130\ub97c \uc5b4\ub5a4 \uad6c\uc870\ub85c \ud574\uc11d\ud574\uc57c \ud558\ub294\uc9c0\ub3c4 \uc54c\ub824\uc918\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 <code>Vertex Declaration<\/code>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 Vertex\uc5d0 \uc704\uce58\uc640 UV\uac00 \uc788\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\uc870\ub97c \uc815\uc758\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; Position + TexCoord\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">GPU \uc785\uc7a5\uc5d0\uc11c\ub294 Vertex Buffer\uac00 \ub2e8\uc21c\ud55c \ub370\uc774\ud130 \ubc30\uc5f4\uc77c \ubfd0\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uac01\uac01\uc758 \ub370\uc774\ud130\uac00 \uc704\uce58\uc778\uc9c0, \uc0c9\uc0c1\uc778\uc9c0, UV\uc778\uc9c0 \uc54c\ub824\uc918\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Buffer -&gt; Vertex Declaration -&gt; GPU\uac00 Vertex \ud574\uc11d\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Transform<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">3D \ubaa8\ub378\uc758 \uc815\uc810\uc740 \ucc98\uc74c\ubd80\ud130 \ud654\uba74 \uc88c\ud45c\ub97c \uac00\uc9c0\uace0 \uc788\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uacf5\uac04\uc744 \uac70\uce58\uba74\uc11c \ucd5c\uc885\uc801\uc778 \ud654\uba74 \uc704\uce58\uac00 \uacb0\uc815\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Local Space -&gt; World Space -&gt; View Space -&gt; Clip Space -&gt; Screen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 \ub300\ud45c\uc801\uc73c\ub85c \uc138 \uac00\uc9c0 Matrix\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>World Matrix -&gt; \ubaa8\ub378\uc758 \uc704\uce58 \/ \ud68c\uc804 \/ \ud06c\uae30\nView Matrix -&gt; \uce74\uba54\ub77c \uae30\uc900\uc73c\ub85c \ubcc0\ud658\nProjection Matrix -&gt; 3D \uacf5\uac04\uc744 \ud654\uba74\uc5d0 \ud22c\uc601\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc778 \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; World Matrix -&gt; View Matrix -&gt; Projection Matrix -&gt; Rasterization\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\ub294 3D \uadf8\ub798\ud53d\uc744 \uc774\ud574\ud558\ub294 \ub370 \ud575\uc2ec\uc801\uc778 \ubd80\ubd84\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">World Matrix<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub378\uc758 \ub85c\uceec \uc88c\ud45c\ub97c \uc6d4\ub4dc \uacf5\uac04\uc5d0 \ubc30\uce58\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Model -&gt; World Matrix -&gt; World Space\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uce58, \ud68c\uc804, \ud06c\uae30 \ub4f1\uc758 \uc815\ubcf4\ub97c \ud1b5\ud574 \uac8c\uc784 \uc6d4\ub4dc\uc5d0\uc11c \ubaa8\ub378\uc774 \uc5b4\ub514\uc5d0 \uc874\uc7ac\ud558\ub294\uc9c0\ub97c \uacb0\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">View Matrix<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uce74\uba54\ub77c\ub97c \uae30\uc900\uc73c\ub85c \uc6d4\ub4dc \uacf5\uac04\uc744 \ubc14\ub77c\ubcf4\ub294 \uc88c\ud45c\uacc4\ub85c \ubcc0\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>World Space -&gt; View Matrix -&gt; Camera Space\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uce74\uba54\ub77c\uc758 \uc704\uce58\uc640 \ubc29\ud5a5\uc774 \ubc14\ub00c\uba74 \uac19\uc740 \ubaa8\ub378\uc774\ub77c\ub3c4 \ud654\uba74\uc5d0\uc11c \ubcf4\uc774\ub294 \uc704\uce58\uac00 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Projection Matrix<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uce74\uba54\ub77c \uacf5\uac04\uc758 3D \ub370\uc774\ud130\ub97c \ud654\uba74\uc5d0 \ud22c\uc601\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>View Space -&gt; Projection Matrix -&gt; Clip Space\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Perspective Projection\uc744 \uc0ac\uc6a9\ud558\uba74 \uac00\uae4c\uc6b4 \ubb3c\uccb4\ub294 \ud06c\uac8c \ubcf4\uc774\uace0 \uba3c \ubb3c\uccb4\ub294 \uc791\uac8c \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>3D Space -&gt; Projection -&gt; 2D Screen\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Texture<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub378 \ud45c\uba74\uc5d0 \uc774\ubbf8\uc9c0\ub97c \uc785\ud788\uae30 \uc704\ud574 Texture\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 <code>IDirect3DTexture9<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mesh + Texture -&gt; Textured Object\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub80c\ub354\ub9c1 \uc804\uc5d0 Device\uc5d0 Texture\ub97c \uc5f0\uacb0\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>device-&gt;SetTexture(0, texture);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \ub2e8\uc21c\ud788 Texture\ub97c \uc5f0\uacb0\ud558\ub294 \uac83\ub9cc\uc73c\ub85c\ub294 \uc5b4\ub5a4 \ubd80\ubd84\uc5d0 \uc5b4\ub5a4 \uc704\uce58\uc758 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud560\uc9c0 \uc54c \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc5d0\uc11c UV \uc88c\ud45c\uac00 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">UV Coordinate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UV\ub294 Texture\uc758 \uc5b4\ub290 \uc704\uce58\ub97c \uc0ac\uc6a9\ud560 \uac83\uc778\uc9c0 \ub098\ud0c0\ub0b4\ub294 \uc88c\ud45c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c 0~1 \ubc94\uc704\ub85c \ud45c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(0,0) -&gt; Texture\uc758 \uc67c\ucabd \uc704\n(1,0) -&gt; Texture\uc758 \uc624\ub978\ucabd \uc704\n(0,1) -&gt; Texture\uc758 \uc67c\ucabd \uc544\ub798\n(1,1) -&gt; Texture\uc758 \uc624\ub978\ucabd \uc544\ub798\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vertex\ub9c8\ub2e4 UV \uc88c\ud45c\ub97c \uac00\uc9c0\uace0 \uc788\uc73c\uba74 GPU\uac00 \uc0bc\uac01\ud615 \ub0b4\ubd80\uc758 \ud53d\uc140\uc5d0 \uc801\uc808\ud55c Texture \uc88c\ud45c\ub97c \uacc4\uc0b0\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; UV -&gt; Texture Sampling -&gt; Pixel Color\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub378\ub9c1 \ud234\uc5d0\uc11c UV\ub97c \ud3bc\uce58\ub294 \uc791\uc5c5\ub3c4 \uacb0\uad6d \uc774 \uad6c\uc870\ub97c \uc704\ud55c \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Shader<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Shader\ub294 GPU\uc5d0\uc11c \uc2e4\ud589\ub418\ub294 \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 \ub300\ud45c\uc801\uc73c\ub85c Vertex Shader\uc640 Pixel Shader\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Data -&gt; Vertex Shader -&gt; Rasterization -&gt; Pixel Shader -&gt; Output\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Vertex Shader<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\uc810 \ub2e8\uc704\uc758 \ucc98\ub9ac\ub97c \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c Matrix\ub97c \uc774\uc6a9\ud55c \uc88c\ud45c \ubcc0\ud658\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; Vertex Shader -&gt; Transformed Vertex\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Pixel Shader<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rasterization\uc744 \ud1b5\ud574 \uc0dd\uc131\ub41c Pixel \ub2e8\uc704\uc758 \uc0c9\uc0c1\uc744 \uacc4\uc0b0\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Texture, Lighting, Special Effect \ub4f1\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Pixel Data + Texture + Lighting -&gt; Pixel Shader -&gt; Final Color\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 HLSL\ub85c Shader\ub97c \uc791\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HLSL -&gt; Compile -&gt; Shader -&gt; GPU\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Fixed Function Pipeline<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c\ub294 Shader\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \ubbf8\ub9ac \uc815\ud574\uc9c4 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub294 Fixed Function Pipeline\ub3c4 \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; Fixed Function -&gt; Rasterization -&gt; Fixed Function -&gt; Pixel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Shader \uae30\ubc18\uc73c\ub85c \uc791\uc131\ud558\uba74 \uc77c\ubd80 \ub80c\ub354\ub9c1 \uacfc\uc815\uc744 \uc9c1\uc811 \uc81c\uc5b4\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex -&gt; Vertex Shader -&gt; Rasterization -&gt; Pixel Shader -&gt; Pixel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\ub294 \ub450 \ubc29\uc2dd\uc744 \ubaa8\ub450 \ubcfc \uc218 \uc788\uae30 \ub54c\ubb38\uc5d0 \uadf8\ub798\ud53d API\uc758 \ubc1c\uc804 \uacfc\uc815\uc744 \uc774\ud574\ud558\uae30\uc5d0\ub3c4 \uc88b\uc740 \ud3b8\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Render State<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\ub294 \uc0c1\ud0dc \uae30\ubc18\uc73c\ub85c \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac Device\uc5d0 \uc5b4\ub5a4 \uc0c1\ud0dc\uac00 \uc124\uc815\ub418\uc5b4 \uc788\ub294\uc9c0\uac00 \uc774\ud6c4 Draw \uacb0\uacfc\uc5d0 \uc601\ud5a5\uc744 \uc900\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 Alpha Blending\uc744 \ud65c\uc131\ud654\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>device-&gt;SetRenderState(\n    D3DRS_ALPHABLENDENABLE,\n    TRUE\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Depth Test \uc5ed\uc2dc Render State\ub97c \ud1b5\ud574 \uc124\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Set Render State -&gt; Set Texture -&gt; Set Shader -&gt; Draw\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c DirectX 9 \ub80c\ub354\ub9c1 \ucf54\ub4dc\ub97c \ubcfc \ub54c\ub294 <strong>\ud604\uc7ac Device\uc5d0 \uc5b4\ub5a4 \uc0c1\ud0dc\uac00 \uc124\uc815\ub418\uc5b4 \uc788\ub294\uac00<\/strong>\ub97c \uac19\uc774 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Depth Buffer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">3D \uacf5\uac04\uc5d0\uc11c\ub294 \uc5ec\ub7ec \ubb3c\uccb4\uac00 \uac19\uc740 \ud654\uba74 \uc601\uc5ed\uc5d0 \uacb9\uccd0\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c \uce74\uba54\ub77c\uc640 \uac00\uae4c\uc6b4 \ubb3c\uccb4\uac00 \uc55e\uc5d0 \ubcf4\uc774\ub3c4\ub85d \ucc98\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depth Buffer, \ud754\ud788 Z-Buffer\uac00 \uc774 \uc5ed\ud560\uc744 \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Pixel -&gt; Depth Test -&gt; \ud1b5\uacfc -&gt; \ud654\uba74\uc5d0 \uae30\ub85d\nPixel -&gt; Depth Test -&gt; \uc2e4\ud328 -&gt; \ubc84\ub9bc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 Pixel\uc758 \uae4a\uc774 \uac12\uc744 \ube44\uad50\ud558\uae30 \ub54c\ubb38\uc5d0 3D \ubb3c\uccb4\uc758 \uc55e\ub4a4 \uad00\uacc4\ub97c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Geometry -&gt; Rasterization -&gt; Depth Test -&gt; Final Pixel\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Back Buffer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784\uc5d0\uc11c \ud654\uba74\uc5d0 \uc9c1\uc811 \ub80c\ub354\ub9c1\ud558\uba74 \ub80c\ub354\ub9c1 \uc911\uac04 \uacb0\uacfc\uac00 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubcf4\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c Back Buffer\uc5d0 \uba3c\uc800 \ud55c Frame\uc744 \uc644\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rendering -&gt; Back Buffer -&gt; \uc644\uc131\ub41c Frame\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc644\uc131\ub41c Frame\uc744 <code>Present()<\/code>\ub97c \ud1b5\ud574 \ud654\uba74\uc5d0 \ud45c\uc2dc\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Back Buffer -&gt; Present -&gt; Display\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc73c\ub85c \ubcf4\uba74 Double Buffering\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Render -&gt; Back Buffer -&gt; Present -&gt; Display\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ub80c\ub354\ub9c1 \ud30c\uc774\ud504\ub77c\uc778<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc758 \ud575\uc2ec\uc744 \ud558\ub098\ub85c \ubb36\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ud750\ub984\uc73c\ub85c \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex \/ Index Data -&gt; Vertex Processing -&gt; Rasterization -&gt; Pixel Processing -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Shader\ub97c \uc0ac\uc6a9\ud558\ub294 \uc77c\ubc18\uc801\uc778 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Buffer \/ Index Buffer -&gt; Vertex Shader -&gt; Rasterization -&gt; Pixel Shader -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c Texture\ub294 Pixel Shader\uc5d0\uc11c \uc0d8\ud50c\ub9c1\ub418\uc5b4 \ucd5c\uc885 \uc0c9\uc0c1 \uacc4\uc0b0\uc5d0 \uc0ac\uc6a9\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex + Index -&gt; Vertex Shader -&gt; Rasterization -&gt; Pixel Shader + Texture -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Resource \uad00\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 GPU \ub9ac\uc18c\uc2a4\ub294 \uba85\uc2dc\uc801\uc73c\ub85c \uc0dd\uc131\ud558\uace0 \uad00\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ub9ac\uc18c\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Device -&gt; Vertex Buffer \/ Index Buffer \/ Texture \/ Shader\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc758 COM \uae30\ubc18 \uac1d\uccb4\ub294 Reference Counting\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc0ac\uc6a9\uc774 \ub05d\ub09c \uac1d\uccb4\ub294 \uc801\uc808\ud558\uac8c Release\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>texture-&gt;Release();\nvertexBuffer-&gt;Release();\ndevice-&gt;Release();\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">C++\uc5d0\uc11c\ub294 \uc774\ub97c RAII \ubc29\uc2dd\uc73c\ub85c \uac10\uc2f8\uc11c \uc218\uba85 \uad00\ub9ac\ub97c \uc790\ub3d9\ud654\ud558\ub294 \ubc29\ubc95\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Lost Device<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc5d0\uc11c \ud2b9\uc9d5\uc801\uc778 \uac1c\ub150 \uc911 \ud558\ub098\uac00 Device Lost\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 \uc0c1\ud669\uc5d0\uc11c Device\ub97c \uc815\uc0c1\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc73c\uba70, \uc774 \uacbd\uc6b0 Device \uc0c1\ud0dc\ub97c \ud655\uc778\ud558\uace0 \ud544\uc694\ud55c \ub9ac\uc18c\uc2a4\ub97c \ub2e4\uc2dc \uc900\ube44\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Rendering -&gt; Device Lost -&gt; Rendering \uc911\ub2e8 -&gt; Device Reset -&gt; Resource \ubcf5\uad6c -&gt; Rendering \uc7ac\uac1c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 <code>D3DPOOL_DEFAULT<\/code>\uc5d0 \uc18d\ud558\ub294 \ub9ac\uc18c\uc2a4\ub294 Device Reset\uacfc \uad00\ub828\ud558\uc5ec \ub2e4\uc2dc \uc0dd\uc131\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9 \ucf54\ub4dc\uc5d0\uc11c Device Reset \ucc98\ub9ac\uac00 \ubcf5\uc7a1\ud574\uc9c0\ub294 \uc774\uc720\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Win32\uc640 DirectX 9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9 \uc790\uccb4\uac00 Windows\uc758 Window \uc2dc\uc2a4\ud15c\uc744 \ub300\uc2e0\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c Win32\ub97c \ud1b5\ud574 \ucc3d\uc744 \ub9cc\ub4e4\uace0 Direct3D\ub97c \ud574\ub2f9 \ucc3d\uc5d0 \uc5f0\uacb0\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Win32 -&gt; Window \/ HWND -&gt; Direct3D Device -&gt; Rendering -&gt; Back Buffer -&gt; Present -&gt; Window\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \ud504\ub85c\uadf8\ub7a8 \uc804\uccb4\ub97c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uad00\uacc4\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Win32 -&gt; Window \/ Input\nGame -&gt; Game Logic \/ Resource \/ Scene\nDirect3D -&gt; Rendering\nGPU -&gt; \uc2e4\uc81c \uadf8\ub798\ud53d \ucc98\ub9ac\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Windows \uac8c\uc784 \uac1c\ubc1c\uc5d0\uc11c\ub294 Win32\uc640 DirectX\ub97c \ud568\uaed8 \uc774\ud574\ud558\uba74 \uad6c\uc870\uac00 \uba85\ud655\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DirectX 9 \uac1c\ubc1c \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uac8c\uc784 \ud504\ub85c\uadf8\ub7a8\uc744 \ub2e8\uc21c\ud654\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc870\ub85c \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game -&gt; Input -&gt; Update -&gt; Scene -&gt; Render -&gt; Present\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Render \ub0b4\ubd80\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uc791\uc5c5\uc774 \uc218\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Scene -&gt; Mesh -&gt; Vertex \/ Index -&gt; Transform -&gt; Texture \/ Shader \/ State -&gt; Draw -&gt; GPU Pipeline -&gt; Back Buffer -&gt; Present\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \uc870\uae08 \ub354 \uc138\ubd84\ud654\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Game State -&gt; World \/ Camera -&gt; Mesh -&gt; Vertex \/ Index Buffer -&gt; Transform -&gt; Shader \/ Texture \/ Render State -&gt; Draw -&gt; Vertex Processing -&gt; Rasterization -&gt; Pixel Processing -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac83\uc774 DirectX 9\ub97c \uacf5\ubd80\ud560 \ub54c \uac00\uc7a5 \uc911\uc694\ud55c \uc804\uccb4 \ud750\ub984\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DirectX 9\uc5d0\uc11c \uc7a1\uc544\uc57c \ud560 \ud575\uc2ec<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc758 API\ub97c \uc804\ubd80 \uc678\uc6b8 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \uad00\uacc4\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \ud6e8\uc52c \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Device -&gt; Resource -&gt; State -&gt; Draw -&gt; GPU Pipeline -&gt; Back Buffer -&gt; Present\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Resource\uc5d0\ub294 \ub300\ud45c\uc801\uc73c\ub85c \ub2e4\uc74c\uc774 \ub4e4\uc5b4\uac04\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Vertex Buffer\nIndex Buffer\nTexture\nShader\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">State\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uac83\ub4e4\uc774 \ub4e4\uc5b4\uac04\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Render State\nTransform\nTexture State\nShader State\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \uac8c\uc784\uc774 GPU\uc5d0 \ub80c\ub354\ub9c1\uc744 \uc694\uccad\ud558\ub294 \uad6c\uc870\ub294 \ub2e4\uc74c\uc73c\ub85c \uc555\ucd95\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Data -&gt; Resource -&gt; State -&gt; Draw -&gt; GPU -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\ub97c \uc774\ud574\ud558\ub294 \ub370 \ud544\uc694\ud55c \ud575\uc2ec \uac1c\ub150\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Direct3D Device\nVertex\nVertex Buffer\nIndex Buffer\nPrimitive\nVertex Declaration\nTransform\nTexture\nUV\nShader\nRender State\nDepth Buffer\nBack Buffer\nPresent\nResource Management\nDevice Lost\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uac1c\ub150\ub4e4\uc740 \uac01\uac01 \ub530\ub85c \uc874\uc7ac\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\ub098\uc758 \ub80c\ub354\ub9c1 \uacfc\uc815\uc5d0\uc11c \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mesh -&gt; Vertex \/ Index -&gt; Buffer -&gt; Transform -&gt; Shader -&gt; Rasterization -&gt; Pixel -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; Screen\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \ub8e8\ud504\uae4c\uc9c0 \ud3ec\ud568\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Input -&gt; Update -&gt; Render -&gt; Vertex \/ Index -&gt; Transform -&gt; Shader -&gt; Rasterization -&gt; Pixel -&gt; Depth \/ Blend -&gt; Back Buffer -&gt; Present -&gt; \ubc18\ubcf5\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">DirectX 9\uc758 \ud575\uc2ec\uc740 API \ud568\uc218 \uc554\uae30\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uac8c\uc784 \ub370\uc774\ud130\ub97c GPU\uac00 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 Resource\ub85c \uc900\ube44\ud558\uace0, \ud544\uc694\ud55c State\ub97c \uc124\uc815\ud55c \ub2e4\uc74c Draw \uba85\ub839\uc744 \ud1b5\ud574 \ub80c\ub354\ub9c1 \ud30c\uc774\ud504\ub77c\uc778\uc744 \uc2e4\ud589\ud558\ub294 \uad6c\uc870<\/strong>\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\ub97c \uc7a1\uc544\ub450\uba74 DirectX 11\uc774\ub098 DirectX 12\ub85c \ub118\uc5b4\uac00\ub3c4 \ud575\uc2ec \uac1c\ub150\uc774 \uc644\uc804\ud788 \uc0c8\ub85c \ub4f1\uc7a5\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, \uac19\uc740 \uadf8\ub798\ud53d \ud30c\uc774\ud504\ub77c\uc778\uc744 \ub354 \uba85\uc2dc\uc801\uc774\uace0 \uc138\ubc00\ud558\uac8c \uc81c\uc5b4\ud558\ub294 \ubc29\ud5a5\uc73c\ub85c \ubc1c\uc804\ud588\ub2e4\ub294 \uac83\uc744 \uc774\ud574\ud560 \uc218 \uc788\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>DirectX 9\ub294 \uc624\ub798\ub41c \uadf8\ub798\ud53d API\uc9c0\ub9cc \uac8c\uc784 \uac1c\ubc1c\uacfc 3D \ub80c\ub354\ub9c1\uc758 \uae30\ubcf8 \uad6c\uc870\ub97c \uc774\ud574\ud558\uae30\uc5d0\ub294 \uc88b\uc740 \uae30\uc220\uc774\ub2e4. \uc694\uc998\uc740 DirectX 11, DirectX 12, Vulkan \uac19\uc740 API\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc9c0\ub9cc Device, Vertex Buffer, Index Buffer, Texture, Shader, Render State \uac19\uc740 \uac1c\ub150\uc740 \uc774\ud6c4 \uadf8\ub798\ud53d API\uc5d0\uc11c\ub3c4 \ud615\ud0dc\ub9cc \ub2ec\ub77c\uc9c8 \ubfd0 \uacc4\uc18d \ub4f1\uc7a5\ud55c\ub2e4. DirectX 9\ub97c \uacf5\ubd80\ud560 \ub54c \uc911\uc694\ud55c \uac83\uc740 API \ud568\uc218\ub97c \ub9ce\uc774 \uc678\uc6b0\ub294 \uac83\uc774 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[],"class_list":["post-1654","post","type-post","status-publish","format-standard","hentry","category-game"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1654"}],"version-history":[{"count":3,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1654\/revisions"}],"predecessor-version":[{"id":1944,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1654\/revisions\/1944"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}