프로그래밍 공부

서울게임아카데미 교육과정 6개월 국비과정 113

카테고리 설명
  • 게임 Object의 바닥을 설정해보자. 우선, 계속 반복되는 항목인 Material과 MatrixBuffer를 통합하여 관리하자. GameObject 정의하기 #pragma once class GameObject : public Transform { public: GameObject(wstring shaderfile = L"Tutorial.hlsl"); ~GameObject(); void SetRender(); Material* GetMetrial() { return material; } protected: Material* material; MatrixBuffer* worldBuffer; }; 같은 Obejct를 만들때 같이 선언되는 부분들은 통합하여도 무방할것이다. 위와같이 Material과 worl..

  • 이전에 사용하던 ID3D11ShaderResourceView* srv 를 따로 만들어서 한개의 객체당 한개의 srv를 생성하는것 이 아닌. srv를 공통으로 사용할 경우. 같은 srv를 사용하도록 만들어보자. Texture #pragma once class Texture { private: // 복사생성자가 아니라 그대로 참조형 생성자로 이동시켜 사용한다 Texture(ID3D11ShaderResourceView* srv, ScratchImage& image, wstring file); ~Texture(); public: void PSSet(UINT slot = 0); public: static Texture* Add(wstring file); static void Delete(); private: ws..

  • 이전에 만들었던 Viewport작업을 먼저 전역변수로 빼준다. 카메라 위치좌표 작업을 새롭게 잡아준다는 의미이다. ViewPort Environment.h를 다음과 같이 선언한다. #pragma once class Environment : public Singleton { private: friend class Singleton; Environment(); ~Environment(); public: void Set(); void SetViewport(UINT width = WIN_WIDTH, UINT height = WIN_HEIGHT); void SetPerspective(); void CreateProjection(); private: MatrixBuffer* viewBuffer; MatrixBuff..

  • 지금까지 만들었던 프레임워크중에 Buffer와 Shader을 나누었던것을 하나의 Mesh와 Material로 나누어보자. 원래 Cube에서 사용되었던 (Shader) PiaxelShader VertexShader (Vertex Data) VertexBuffer vector(Vertex type들) IndexBuffer vector(indices들) 을 각각 Material 와 Mesh로 분리하여 작업한다. Mesh #pragma once template class Mesh { public: Mesh() = default; ~Mesh(); void Draw(D3D11_PRIMITIVE_TOPOLOGY type = D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); void CreateM..

  • DirectX의 3D연산에서는 대부분 행렬연산을 사용한다. Local좌표와 World좌표로 객체를 움직이기 위해 행렬연산을 사용하는데, 4X4 행렬을 이용해서 연산하게되면 데이터값의 연산이 빠르게 이루어지고 쉽게 판별할 수 있기 때문이다. 어떠한 Vertex의 위치좌표를 원하는대로 변경하는 함수를 만들어보자. 위와같은 방식의 함수들을 제작하여 입력된 객체를 이동시키거나, 조절하거나, 회전시키는것이 목표이다. #pragma once class Vector3 { public: Vector3(float x = 0.0f, float y = 0.0f, float z = 0.0f) : value(XMVectorSet(x, y, z, 0)) {} Vector3(Float3 value) : value(XMLoadFlo..

  • Device까지 나누었으니, 이제 Buffer와 Shader를 나누어야 한다. Buffer는 각각 VertexBuffer, IndexBuffer의 각 객체에 사용하는 버텍스와 버텍스 잇는 순서 Buffer로 두개. Shader상수 데이터를 기입하기 위한 ConstantBuffer 한개. ViewPort 변환을 위한 CamaraMatrix용 Buffer 한개. 로. 총 5개의 버퍼가 사용된다. 여기서. Shader상수 데이터가 여러개가 된다면 Buffer 또한 임의의 개수만큼 늘어날 수 있다. Shader는. Vertex의 Color값이 들어가는 VertexShader와 해당 위치좌표의 Pixelcolor값을 결정할 PixelShader로 두개의 Shader가 기입된다. 대강 위와같은 구조로 Shader와..