렌더링(Rendering)
렌더링이란 3차원 공간에 객체(Object)를 2차원 화면인 하나의 장면(Scene)에 바꾸어 표현하는 것을 말한다. 즉 2차원에 표시된 물체를 3차원에 물체처럼 보이게 하는 것이라고 이해하면 쉽다.
렌더링 과정에는 크게 변환(Transformation)과 색칠(Color, Ligthing) 과정으로 구분할 수 있는데 변환 과정이란 3차원 모델 좌표계의 정점들을 2차원 모델 화면 좌표계로 바꾸는 것이고 색칠 과정이란 화면에 그려지는 객체의 색체와 조명 또는 매핑 등으로 원하는 효과 또는 실제 물체와 동일한 물체로 표현하는 것을 말한다.
여기서 좌표 변환 과정에서의 내용을 조금 더 세부적으로 알아볼 수 있는데 이런 일련의 렌더링 과정이 진행되는 렌더링 파이프라인을 보며 알 수 있다.
렌더링 파이프 라인이란 3차원 공간의 오브젝트를 2D 이미지를 그려내는 일련의 과정을 말하며 기본적인 렌더링 파이프 라인의 과정 중 레스터라이즈 과정 이전에 오브젝트의 데이터를 받아오고 기본적인 정점 셰이더가 진행되며, 이후 픽셀 셰이더(프레그먼트 셰이더) 순으로 흐림이 흘러가게 된다.
변환 (Transformation) 과정
로컬 스페이스 (로컬 좌표) – Local Space
모델링 스페이스라고도 불리는 로컬 스페이스는 하나의 객체(자기 자체)만 존재하는 좌표를 정의하는 데 이용하는 좌표 시스템이다. 로컬 스페이스는 모델링 과정을 쉽고 단순하게 만들어주며, 자체의 로컬 좌표 시스템을 이용하는 이 월드에서 직접 모델을 구성하는 것보다 훨씬 쉽다.
예를 들어,그래픽 작업이 이루어지는 환경을 이야기 할 수 있다.
로컬 스페이스를 이용하면 위치나 크기, 월드 내의 다른 물체와의 관계 등을 고려하지 않고 구체적인 물체도 모델을 구성할 수 있다
월드 스페이스 (월드 좌표) – World Space
로컬 좌표는 각 물체 내부의 상대 좌표에 불과하므로, 다른 물체와의 상호 관계를 파악하고자 할 때는 사용할 수 없다. 다른 물체와 서로 비교하려면 단 하나만 존재하는 월드 좌표 상에서 각기 로컬좌표를 월드 좌표로 변환해야만 한다.
월드 좌표는 자체의 로컬 좌표 시스템 내에 다수의 모텔을 구성한 다음에는 이를 전역(월드) 좌표 시스템으로 옮겨 하나의 장면을 구성해야 한다. 로컬 스페이스의 물체들은 이동, 회전, 크기 변형 등을 포함하는 월드 변환이라는 작업을 거쳐 월드 스페이스로 옮겨 진다.
월드 변환은 위치와 크기, 방위를 포함하는 각 물체 간의 관계를 정의함으로써 이루어진다.
예로 여러 곳에 흩어져있는 각각의 블록을 하나의 공간에 적절하게 배치한다고 생각할 수 있다.
로컬 스페이스에서 월드 스페이스로 변환하는 행렬의 값에 따라서, 이동, 회전, 크기 변경 등의 작업을 거치게 된다
뷰 스페이스 (카메라 좌표) – View Space
월드 스페이스 내에서 기하물체와 카메라는 월드 좌표 시스템과 연계되어 정의된다. 카메라가 월드 내 임의의 위치나 방위를 가진다면 투영이나 그 밖의 작업이 어렵거나 덜 효율적이 된다. 따라서 작업의 수월 함을 위해 카메라를 월드 시스템의 원점으로 변환하고,카메라가 양의 z-축을 내려다 보도록 회전시켜야 한다. (이때 카메라의 축은 좌표계 설정에 따라서 달라진다)
이때 월드에 대한 관점이 바뀌지 않도록 하기 위해서는 카메라에 맞추어 월드 내의 모든 기하물체를 변환해야 하는데, 이와 같은 변환을 뷰 스페이스 변환이라 하며,이 변환을 거친 물체는 뷰 스페이스 내에 위치한 다고 말할 수 있다.
예로 들어 카메라를 들고 어떤 장면을 찍는다고 생각할 수 있겠다.
보는 방향이 결정되면 해당 방향에 있는 객체들만 출력처리를 하기 위해 카메라가 존재하는 곳을 원점으로 하고, 카메라가 바라보는 방향을 기준으로 한 새로운 카메라 좌표계를 만든 뒤, 이 좌표계로 월드 좌표계를 변환하는 것이다.
후면 추려내기 - BackFace Culling
폴리곤은 두 개의 변을 가지고 있으며 하나의 변을 전면, 다른 면을 후면이라 부른다.
일반적으로 폴리곤의 후면은 절대 보여지지 않는데, 이는 장면 내의 물체들이 대부분 박스나 원기둥, 캐릭터 등과 같은 채워진 볼륨이며, 채워진 물체의 내부로 카메라를 넣는 것이 허용되지 않기 때문이다, 카메라는 절대로 폴리곤의 후면을 보지 못한다. 이와 같은 사실은 매우 중요하다.
왜냐하면 폴리곤의 후면을 볼 수 있는 경우에는 후면 추려내기가 작동하지 않기 때문이다.
이 과정을 우선 이해하기 위해서는 객체의 앞면과 뒷면을 무엇으로 결정하느냐를 이해해야 한다.
기본적으로 두르기 순서 (winding order)라고 부르며 지정된 시계방향에(뷰 스페이스) 지정된 버텍스를 가진 폴리곤을 전면 폴리곤으로 취급하고 그 반대인 반 시계방향으로 그려져 있다면 그리지 않게 된다.
만약 좌측에 그림의 사각형이 있을 때 시계방향으로 그릴 경우 각 버텍스는 0->1->2로 하나의 삼각형을 다른 하나의 삼각형을 0->2->3 순서로 그려 후면이 아닌 전면으로 인식하도록 한다.
좌측에 그림을 보면 전면을 향하고 있는 폴리곤들이 뒤쪽의 후면 폴리곤들을 가리고 있음을 알 수 있다. 대부분 렌러딩 과정에서 후면 폴리곤을 추려냄으로서(이후의 처리에서 제거) 렌더링 과정에 비용을 줄일 수 있다. 이와 같은 과정을 후변 추려 내기(backface culling) 라고 하며 후면을 추려 낸 후 결과는 우측 그림과 같다.
생각을 조금 해본다면 당연히 카메라의 입장에서 후면은 어차피 가려져 보이지 않으므로 추려내기 전이나 후나 동일한 이미지가 만들어지고 보이지 않는 부분을 굳이 그려낼 필요가 없다.
조명 - Light
조명은 장면의 실감을 더하기 위해 사용되며, 입체의 형태와 물체의 부피를 표현 하는 데도 도움을 준다. 조명을 이용하면 물체의 색상이 자동적으로 계산되며, 조명 모델에 따라 계산된 컬러는 훨씬 자연스러운 장면을 연출한다.
조명의 요소 즉 조명 모델에서 광원을 만들어내는 빛은 다음과 같은 세가지 요소로 구성된다.
환경광 - Ambient Light
주변광, 환경광이라고도 불리며 씬 전체를 똑같이 비추는 것으로 광원의 위치를 가지지 않고 방향성만 가지며, 평평하게 발산되는 빛이라고 생각하면 쉽다. 다르게는 물체(표면)에 반사되어 전반적인 장면을 밝게 하는 빛을 말하며, 컴퓨터 그래픽스에서는 빛의 강도, 위치, 표면의 방향에 의해 그 색이 변하지 않고 단지 대상 물체의 주변 색상을 나타난다고 정의한다.
이상적인 형태의 광원이고, 실제 물질세계에는 존재하지 않는 수학적인 빛의 형태이다.
보통 디퓨즈(Diffuse)컬러와 같이 사용하며, 단일사용의 경우 입체감을 느끼기 어렵다.
예를 들어 물체의 일부분은 광원의 직접적인 시야에서 가려져 있더라도 약간의 빛을 받는다 이런 부분은 다른 표면에서 반사된 빛을 받는 것이다 환경광은 이와 같이 반사된 빛을 비교적 저렴하고 간단 게 구현하는 방법이다.
난반사광 - Diffuse Light
난반사광 분산광이라고도 하며 특정한 고정적인 방향으로 진행하며, 표면에 닿으면 모든 방향으로 동일하게 반사된다.
모든 방향으로 동일하게 반사되므로 위치와는 관계없이 관찰자의 눈에 빛이 도달하고 관찰자의 위치를 고려할 필요가 없다.
즉 난반사광의 방정식에는 빛의 방향과 표면의 형태만을 고려하면 된다.
난반사광은 광원에서 발산되는 가장 일반적인 빛이다.
표면이 거친 석고처럼 반짝이지 않고 윤기 없는 표면에서 반사하는 모습을 재현한다.
정반사광 (Specular Light)
정반사광은 특정한 방향으로 진행하며, 표면에 닿으면 한 방향으로 강하게 반사하여 특정한 각도에서만 관찰할 수 있다.
한 방향으로만 빛을 반사하기 때문에 정반사광의 방정식 에는 빛의 방향과 표면의 형태 그리고 관찰자의 시점을
모두 고려해야 한다.
정반사광은 반짝이는 표면 에 빛이 반사하는 효과를 모델링하는데 이용된다.
클리핑 -Clipping
카메라의 시야 외부의 물체를 추려 내어 그리지 않도록 하는 과정을 클리핑이라 한다.
카메라의 시야범위를 표현할 수 있는 절두체라고 하는데 해당 영역에 어느 정도 포함되느냐에 따라서 카메라
시야범위 내에 물체를 세 가지로 분류할 수 있다.
완전한 내부 - 삼각형이 완전히 절두체 내부에 위치하면 그대로 보존되어 다음 단계로 진행한다.
완전한 외부 - 삼각형이 완전히 절두체 외부에 위치하면 추려내어진다.
부분적 내부 (부분적 외부) - 삼각형이 부분적으로 절두체 내부에 위치하면 삼각형을 두 개의 부분으로 분리한다 절두체 내부의 부분은 보존되며,나머지는 추려내어진다.
투영 – Projection
n 차원 에서 n-1 차원을 얻는 과정을 투영(projection)이라고 하며, 뷰 스페이스에서는 3D 장면의 2D 표현을 얻는 과정을 말한다. 3차원에서 2차원으로 변환하는 핵심과정이며 렌더링 파이프 라인에서 가장 중요한 과정 중 하나이다.
투영을 수행하는 방법에는 여러 가지가 있지만 크게 두 가지로 하나는 직교 투영(orthographic projection)혹은 평행 투영(parallel projection)이라는 방법과 원근 투영(perspective projection) 이라는 방법이 있다.
직교 투영(평행 투영) - orthographic projection (parallel projection)
직교 투영법은 원근감을 배제하고, 수직 시점으로 위에서 내려다 보듯이 투영하는 방법으로 Z값의 거리에 따른 오차가 없기 때문에 정밀한 모델링이나 측량 등에 유리한 반면 현실감이 떨어지는 방법이다.
원근 투영 - perspective projection
원근 투영법은 원근법을 이용하여 물체를 투영하는 방법으로, 카메라 에서 멀리 떨어진 체는 가까운 물체에 비해 작게 나타난다. 원근 투영법은 3D 장면을 2D 이미지로 표현하는 데 가장 적합하다.
뷰 포트 - View Port
뷰포트 변환은 프로젝트 윈도우의 좌표를 뷰 포트라 불리는 화면의 직사각형으로 변환하는 과정을 말한다. 게임에서의 뷰 포트는 보통 직사각형의 전체 화면이 되지만, 윈도우 모드에서 실행하는 경우에는 클라이언트 영역이나 화면의 일부가 될 수도 있다.
윈도우 클라이언트 영역과 상호작용을 통해, 실제로 출력될 위치를 맞추어주기 위한 과정을 말하며, 투영과정을 통해서 2차원의 변환은 끝난 상태이지만. 어느 영역에 어느 크기로 출력될 것인가의 정보를 설정하는 단계로 뷰포트 사각형은 이를 포함하고 있는 윈도우와 상대적이며, 윈도우 좌표를 이용해 지정된다.
레스터라이즈 -Resterize
스크린 좌표로 버텍스들을 변환한 다음에는 2D 삼각형들의 리스트를 가지게 된다.
래스터라이즈 단계는 각각의 삼각형을 그리는 데 필요한 픽셀 컬러들을 계산하는 과정이다.
이 과정을 거치게 되면 모니터에 출력할 수 있는 2D 이미지 상태가 된다.
레스터라이즈 이전 단계에서는 버텍스(정점) 단위로 연산이 이루어졌지만, 출력 전 필셀 컬러를 설정하는 과정을 거치기 때문에 연산치 많은 부하가 걸리게 되면 그래픽 하드웨어(GPU)를 통해 처리하게 된다.
색칠 (Color & Lighting) 과정
셰이딩 - Shading
3차원 오브젝트의 표면 처리를 할 때 조명의 위치와 물체의 기울기, 색깔, 밝기 등에 반응하여 오브젝트에 음영처리를 계산하여 적용해 주는 것이다.
단순히 물체에 텍스쳐를 입히는 것만으로는 입체감과 현실성이 떨어지게 된다.
오브젝트의 면 표면에 적절한 기법으로 처리를 해야 하는데 이 방법 또는 빛의 거리와 각도에 따라 물체의 표면을 변화시키켜 다양한 재질을 표한하는 기법을 말한다.
여기서 변환 (Transformation) 과정에서 레스터라이즈 과정 부분 흔히 GPU가 처리하는 과정을 세분화 하면 다음과 같다.
정점(버텍스) 셰이더 – Vertex Shader
버텍스 셰이더로 입력되는 버텍스가 지역 좌표를 가지며, 버텍스 셰이더는 조명(컬러)을 입힌 버텍스를 동종 클립 스페이스로 출력해야 로컬 스페이스의 버텍스를 동종 클립 스페이스로 변환하기 위해서는 월드 행렬,뷰 행렬, 영렬을 해 월드 변환, 뷰 변환, 투영 변환을 차례로 거쳐야 한다.
단순하게 말해 먼저 앞서 렌더링 파이트라인 과정 중 레스터라이즈 이전에 실행되는 정점(버텍스 : Vertex) 쉐이더는 앞서 말한 정점이 가진 좌표, 색상, 텍스쳐, 등의 정보를 가진 값을 수학적 연산으로 효과를 주는 을 하는 것을 말하며, 정점의 좌표를 통해 좌표 변환을 하는 역할을 담당한다.
하지만 이 정점(버텍스 : Vertex) 쉐이더만으로는 텍스쳐와 음영이 없는 폴리곤 덩어리만 출력되게 된다. 화면에는 출력될 수 있지만, 픽셀 쉐이더를 거치치 않았기 때문에 결과적으로는 단순한 결과만이 확인된다.
여기서 정점 쉐이더와 조명만으로 연산을 하게 되면 버텍스 라이트라는 연산을 할 수 있지만 우측에 보이는 그림과 마찬가지로 부정확한 결과를 확인 할 수 있다.
픽셀 셰이더 – Pixel Shader
픽셀 셰이더는 각 픽셀의 레스터라이즈 과정을 위해 그래픽 카드의 GPU에서 각각의 셀을 직접 처리하고 픽셀의 텍스처 좌표에 접근하는 능력을 제공한다.
픽셀과 텍스처 좌표에 대한 직접적인 접근은 멀티 텍스처링이나 픽셀 당 조명, 필드 깊이, 여러 시뮬레이션, 복잡한 그림자와 같은 특수 효과를 가능하게 해준다. 즉 화면 표시되는 픽셀의 최종적인 색상을 결정하는 것을 말한다.
셰이딩의 종류 - Shading
셰이더를 사용하여 물체를 다향한 기법으로 표현하는 쉐이딩에는 여러 가지 기법이 있다.
스무스 쉐이딩 - smooth shading
스무스 셰이딩(Smooth shading)은 다각형 표면의 색깔을 부드럽게 바꾸어가며 다각형을 보여주는 것을 말한다. 이 때 다각형 내부의 색깔은 다각형을 구성하는 정점(vertex)들의 색깔 데이터를 내분(interpolation)하여 계산하기 때문에 각 정점들의 색깔을 각각 정의하고 있어야 한다.
플랫 쉐이딩 - flat shading
플랫 셰이딩(flat shading)은 3차원 컴퓨터 그래픽스에 쓰이는 광원 기술이다. 다각형의 표면 정규와 광원 방향 간 각도, 개별 색상, 광원의 세기에 따라 한 물체의 각 다각형에 그림자를 넣는다
퐁 쉐이딩 - Fhong Shading
3차원 그래픽에서 각각의 화소 컬러와 조명에 기초하여 음영이 있는 표면 계산. 면 단위가 아닌 화소 단위로 오브젝트를 렌더링하므로 텍스처의 질감, 반사, 투명도, 범프(bump, 융기) 등의 효과를 정교하게 반영할 수 있다.
고러드 쉐이딩 - Gouraud Dhading
컴퓨터 그래픽에서 생상과 다각형 면의 구석에서의 조명에 기초하여 그림자가 되는 면을 구해내는 기법으로, 오브젝트의 표면과 각 표면 사이의 교차부분의 색상이 급격하게 변하는 것을 막기 위해 두 평면색을 보간법으로 해석해서 표면의 중심에서 각 표면의 교차선까지 연속적으로 색을 부드럽게 변화시키는 방법
애니소트로픽 쉐이딩 - Anisotropic Shading
타원형, 방향성 하이라이트를 갖는 표면을 만든다. 머리카락이나 유리, 금속 등의 하이라이트를 표현하는 데 적합하며, 가장 밝은 부분 외에는 블린 또는 퐁 쉐이딩과 속성이 비슷하다.
블린 쉐이딩 - Blinn Shading
퐁 쉐이딩과 거의 같은 방식으로 처리하지만 하이라이트가 맺히는 부분에서 광원을 보다 정확하게 반사해 주기 때문에 금속 질감의 표현에 적합하며, 퐁 쉐이딩과 가장 눈에 띄는 차이점은 오브젝트 둘레에 나타나는 하이라이트이다. 블린 쉐이딩을 사용하면 작은 각도로 표면에 입사하는 조명의 어긋난 반짝임에 의해 만들어지는 하이라이트를 얻을 수 있다.
메탈 쉐이딩 - Metal Shading
금속질감을 위한 응용쉐이딩으로 독특한 Specular 하이라이트 곡선을 보이는 메탈 쉐이딩은 실감나게 보이는 금속성 표면과 다양한 유기체 형태의 재질을 제공하며, 표면의 반짝이는 하이라이트 표현에 효과적이다. 금속 재질의 Specular 색상은 따로 설정할 수 없으며, 그 색상은 재질의 Diffuse 색상과 조명 색상에 따라 Specular 색상을 계산한다.
스킨 쉐이딩 - Skin Shading
많이 쓰이는 응용쉐이딩 중 하나로 사람의 피부에 가까운 효과를 내기 위한 쉐이딩이다. 특히 인간의 피부는 색감과 질감은 물론 반사와 투과에 있어서 독특하고 복잡한 구조를 가지고 있다. 반투명한 효과를 위해 SSS(Sub-Surface Scattering) 기술을 이용하는데, SSS는 피부나 종이 등 반투명 물체들의 표면에 빛이 닿아서 투과하지 못하고 산란되면서 이뤄지는 현상을 말한다.
툰 쉐이딩 - Toon Shading
3D 만화적으로 표현하기 위해 만들어졌으며, 음영을 단순화하여 표현하고, 실루엣의 아웃라인을 생성하며, 테두리를 갖는 평평한 음영을 제공한다. 만화적 표현이 가능해지면서 만화 애니메이션 작업의 많은 부분에 활용되고 있다.
셰이더와 텍스쳐를 통해서 다양한 표면 쉐이딩을 하는 부분에 대해서는 아래 링크를 통해 확인이 가능 하다.
[유니티 매뉴얼 : 표면 쉐이더]
https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaderExamples.html
맵핑 - Mapping
3 차원 물체 위에 질감이나 2D 이미지를 부여하는 과정을 말한다.
아무리 모델링이나 최신 셰이더를 사용하더라도 원하는 질감이나 물체를 표현하기란 어렵다.
물체 표면에 모델링만으로는 표현하기 힘든 디테일을 추가하기 위해 사용하는 방법으로 복잡한 모델링을 대체하는 방법 또한 맵핑 기법 중 하나이다.
즉, 셰이딩이 물체 자체의 질감 이나 색상 등의 표면의 느낌을 말하는 것 이라면 맵핑은 이러한 물체에 덮어 씌운 그림이나 무늬를 말한다. 폴리곤 매쉬 표면에 색을 칠하기 위해, 텍스쳐 이미지를 통한 텍스쳐 매핑이 대표적이며, 우선 기본적인 텍스쳐 맵핑은 다음과 같다.
텍스쳐 맵핑 – Texture Mapping
기본적으로 하나의 이미지 파일을 물체에 씌운다고 생각할 수 있다.
이때 3차원 환경에서의 물체이지만 텍스쳐는 일반적으로 2차원 텍스쳐를 사용하게 된다.
일반적인 이미지는 픽셀 값으로 표현하지만 텍스쳐는 u축과 v축으로 이루어진 0.0부터 1.0 사이의 값을 가지는 u,v 좌표를 사용한다.
즉, 텍스쳐의 크기와 관계없이 텍스쳐 좌표의 최대값은 1이며, 최소값은 0이다.
또한 이미지 크기에 따라서는 실제 이미지가 가지는 좌표계가 존재하는데, 그걸을 텍셀 (texture + pixel) 좌표계라고 한다.
uv값에 의해 실제로 결정되는 텍스처 이미지의 픽셀 값을 말한다.
물체에 텍스쳐 맵핑을 하게되면 텍스쳐의 크기에 따라 확대 및 축소를 하게 되고 이때 왜곡이 생기거나 계단현상이 발생하게 된다.
이 부분을 텍스쳐 필터(주변에 픽셀과 어우러지게 하는 작업)링이라는 작업을 통해 해결되고 이 때 사용하는 픽셀에 사용하는 좌표에 텍셀을 사용하게 된다.
법선 맵핑 (노말 맵핑) – Bump Mapping (Normal Mapping)
울퉁불퉁한 표면을 처리하기 위한 특수한 텍스쳐를 사용하는 맵핑으로 움푹 들어간 곳의 빛을 왜곡시키는 기법이다.
많은 폴리곤을 사용하지 않고 세세한 부분을 추가하기 위해 사용한다.
하이 폴리곤 모델에서 노말 맵핑을 위한 텍스쳐를 추출하는 방식으로 제작하며 각 픽셀에서 빛의 방향을 계산하여 적용된 텍스쳐로 해당 텍스쳐를 같이 사용하게 된다면 보다 낮은 폴리곤 모델에도 고해상도 모델과 동일한 효과를 볼 수 있다.
왼쪽에 일반 텍스쳐이고 오른쪽이 노말 맵이라고 불리는 텍스쳐의 형태이다.
먼저 여기서 법선(노말)이란 곡면이나 어떠한 선에 접하는 평면에 수직하는 벡터(방향)로 물체 표면의 방향을 결정한다..
하이 폴리곤 모델에서 노말 맵핑을 위한 텍스쳐를 추출하는 방식으로 제작하고, 로우 폴리곤 모델에 적용한다.
시차 맵핑 - parallax mapping
법선 맵핑 (노말 맵핑) 의 단점으로 가까운 거리에서 부자연스럽게 보인다거나, 굴곡의 높이를 고려할 수 없기 때문에 해당 현상을 해결하기 위해 높이 맵에 대해서 간단한 관선추적 알고리즘을 수행한다.
법선 맵핑 (노말 맵핑) 보다 사실적으로 표현하는 방식이다.
변위 맵핑 - Displacement mapping
법선 매핑과 시차 맵핑의 경우 실제 물체에 정보를 변환하지 않고 픽셀의 색상 정보만 변경하지만 변위 맵핑은 텍스쳐 또는 높이 맵을 사용하여 텍스처링 된 표면 위에 실제 물체를 변경시는 방법이다
환경 맵핑 - environment mapping
오브젝트 주변의 배경들이 반사되는 모습을 표현하는 기법이다.
텍스쳐 6장을 정육면체로 사용하여 배경이나, 스카이 박스 등의 가상의 6면체 환경을 구성하는 Cubic Environment 맵핑에도 사용하며, 오브젝트가 움직일 때 특정 지점을 반사되어 보이거나 반사되는 부분을 바뀌게 되므로 해당 오브젝트 표면도 같이 바뀌는 특징을 가지고 있다.
PS. 오랜만에 블로그 포스팅을 하려고 했더니..
새로운 글쓰기..정말 이상하다..구버전으로 바꾸고 다음부터 써야겠다...
'프로그래밍 관련 > DirectX' 카테고리의 다른 글
3D에 대해서 더 공부해보자! (0) | 2016.07.29 |
---|