파일에서 Texture를 불러올 수 있다면 이제 HeightMap을 불러와서 지형의 높낮이를 만들고, 지형에 음영을 넣어보자 먼저 HeightMap의 기본적인 원리는 이러하다 HeightMap은 단색으로 이루어져있고 이런 느낌으로 밝은 부분과 어두운 부분이 섞여있는 이미지 형태로 되어있다 이 이미지에서 밝은 부분은 지형에서 높은 곳, 어두운 부분은 지형에서 낮은 곳을 의미한다 결과적으로 이 HeightMap의 색을 가져와서 높이로 사용하는 것이다 vector heights; heightMap->ReadPixel(DXGI_FORMAT_R8G8B8A8_UNORM, &heights); width = heightMap->GetWidth(); height = heightMap->GetHeight(); vertex..
Texture 파일을 불러와서 Vertex로 만든 사각형에 채워넣어보자 먼저 UV좌표계를 알아야한다 UV좌표계는 2D로, 0~1까지 정규화된 값으로 uv 비율을 표현한다 좌상단이 (0, 0)인것이 특징이며 Vector2로 나타낸다 Texture 파일을 불러오는 첫 번째 방법 ID3D11ShaderResourceView 사용하기 ID3D11ShaderResourceView* srv; ID3D11ShaderResourceView는 셰이더에 Texture을 넘겨주는 역할을 한다 D3DX11CreateShaderResourceViewFromFile ( D3D::GetDevice(), L"../../_Textures/Box.png", NULL, NULL, &srv, NULL ); 셰이더 Texture2D Map;..
지금까지는 공간의 x, y좌표만 활용하여 2D공간처럼 만든 뒤 다양한 도형들을 띄워보는 작업을 했다 이제는 그 도형을 아주 많이 만들어서 Grid를 만들고, z좌표까지 활용하여 기본이 되는 바닥을 Grid 모양으로 짜고 카메라를 만들어 움직여보자 Gird - Wireframe 먼저 이전에도 했던 Wireframe Mode로 한 칸을 만들어보자 Vertex 4개를 잡아주고, Index는 6개를 잡아준 뒤 삼각형 두개를 그리기 순서에 맞춰 그려주면 된다 indices[0] = 0; indices[1] = 1; indices[2] = 2; indices[3] = 2; indices[4] = 1; indices[5] = 3; 그럼 다음으로 이 한 칸을 3 * 3으로 만들어보자 총 9개의 작은 사각형, 18개의 ..
렌더링 파이프라인의 VS 단계에서는 World, View, Projection이 이루어진다 4x4 행렬로 이루어져있으며 D3DXMatrixIdentity(&world); Identity를 통해 정방행렬로 초기화된다 World 이전에 정점을 옮기는 방법으로 GetDC() -> UpdateSubresource() 함수를 사용했다 이 함수는 사실 빠르지 않은 함수라 사용하지 않고 World를 옮기는 방법을 사용한다 World를 옮기는 것이 정점을 하나하나 움직이는 것보다 훨씬 빠르고 관리도 편하다 여기서 사각형이 Local, 사각형을 담고있는 통이 World를 나타낸다 World를 Transform(이동), Scale(크기), Rotation(회전) 하면 World안의 Local이 전부 동시에 움직인다 //x..
왼손 좌표계 / 오른손 좌표계 왼손 좌표계 - 시계방향으로 그려야 그려진다 오른손 좌표계 - 반시계방향으로 그려야 그려진다 Triangle VertexBuffer vertices[0].Position = Vector3(-0.5f, +0.0f, 0.0f); vertices[1].Position = Vector3(+0.0f, +0.5f, 0.0f); vertices[2].Position = Vector3(+0.5f, +0.0f, 0.0f); vertices[0].Position = Vector3(-0.5f, +0.0f, 0.0f); vertices[1].Position = Vector3(+0.5f, +0.0f, 0.0f); vertices[2].Position = Vector3(+0.0f, +0.5f, 0...
Vertex = 정점 무언가를 그리기 위한 정점 NDC 좌표계 (정규 좌표계) 정규화된 좌표계로 -1 ~ +1으로 나타낸다 2D 공간 렌더링 파이프라인 IA -> VS -> RS -> PS IA (Input Assembly) VertexBuffer, Primitive Topology CPU의 정보를 GPU로 받아온다 정점 정보, 정점을 어떻게 그릴건지 (정점의 Position) VS (Vertex Shader) 정점을 셰이더에서 어떻게 변화시킬건지 WVP가 NDC좌표계로 변경된다 RS (Rasterization) 정점을 3D공간에서 2D공간으로 바꿔준다 정점을 픽셀로 Viewport를 설정한다 (정점에서 정점까지 선을 긋는다고 생각하면 그 선을 이루는 픽셀들을 만드는 작업) PS (Pixel Shader..
DirectX 란? SDK (Software Develop Kit) => API(Application Programming Interface) 프로그래밍을 하기 위한 도구의 집합 게임 개발을 위한 함수나 클래스들을 모아둔 라이브러리 Version 8 CPU렌더링 중점 9 CPU + GPU 렌더링, 셰이더 본격적 지원 복잡한 렌더링 파이프라인 10, 11 GPU 렌더링, 셰이더가 없으면 렌더링 불가 10 -> GS 추가 (Geometry Shader) 11 -> TS 추가 (Tessellation) 12 Window 10에서 지원 Low Level API , 하드웨어에 가깝게 설계됨