프로그래밍 공부

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

카테고리 설명
  • 우선 원래 만들었던 Scene이 아닌 새로운 Scene을 사용하여 새 게임을 제작한다. #pragma once class ShootingScene : public Scene { public: ShootingScene(); ~ShootingScene(); // Scene을(를) 통해 상속됨 void Update() override; void PreRender() override; void Render() override; void PostRender() override; void GUIRender() override; private: Terrain* terrain; ShootingPlayer* player; }; 이미 만들었던 Scene을 상속받고 가상함수 구현을 하면 알아서 구현해준다. Terrain은 ..

  • Direct3D상에서의 ObjectColiision을 구현해보자. 충돌처리는 A객체와 B객채가 존재할 때, A객체와 B객체의 vertices가 겹치는 경우가 생길 경우, 충돌했다고 판정한다. 각 vertice를 검사할 수 없음으로. 최외각선 또는 지름을 기준으로 측정하게 된다. 우선 3차원상의 충돌처리를 구현 하기전, 2차원상의 충돌처리를 확인하고 3차원을 살펴보자. 원의 충돌처리 원은 충돌처리 상 가장 연산이 조금 들어가는 방법이다. 빨간색 이 A원, 초록색이 B원 이라고 할때, A->B의 스칼라값 > A반지름 + B반지름 위 항목이 true면 충돌하지 않음, false이면 충돌한다 라고 이해하면 된다. 같을경우 충돌로 처리하든 아니든 은 취향이다. 2차원상에서의 충돌처리가 이렇다면, 3차원상에서는 어..

  • 머티리얼을 조정하면서 조정된 데이터를 TinyXML2로 저장하고, 로드해보자. TinyXml2는 데이터를 Xml형태로 내보내거나, Xml형태의 데이터를 읽어오는 C++의 라이브러리이다. 라이브러리리의 설치는 엄청 간단한데, https://github.com/leethomason/tinyxml2 GitHub - leethomason/tinyxml2: TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other p TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs..

  • 지금까지 작성했던 노말맵, 스펙컬맵 디퓨즈맵을 관리하는 ImGui를 작성해보자. 우선 머티리얼에서 데이터를 전부 관리함으로. Buffer를. MaterialBuffer를 따로 만들어주어야 할것이다. 전역에서 사용하는 MaterialBuffer을 작성하자. class MaterialBuffer : public ConstBuffer { public : struct Data { Float4 diffuse = { 1, 1, 1, 1 }; Float4 specular = { 1, 1, 1, 1 }; Float4 ambient = { 1, 1, 1, 1 }; float shininess = 24.0f; float hasNormalMap = 0; float padding[2]; }; public: MaterialBu..

  • 구체 Object를 생성해보자. 정20각형을 사용해 구체 Object를 생성할 수도 있고, 아니면 원을 깎아가면서 구체를 생성할 수 있다. 두가지 다 진행해보자. 원의 둘레를 돌면서 생성하기 대부분의 사람이 알고있는 원을 그려보자. 그 원의 중심을 기준으로 선을 한개 그리게되면. 중심점을 기준으로 양분해주는 선이 생길것이다. 이걸 중심선이 아니라 옆에서 바라보았을 때의 원 한개, 위에서 바라보았을 때의 원 한개로 생각해보자. 그러면 머리속으로 그려보았을 때 대강, 십자형태로 원이 두개가 겹쳐있는 모습이 떠오를것이다. 이제 이 원 두개를 계속해서 슬라이스하면서 돌려보자. 이것이 옆에서도, 위에서도 같이 생성되었다고 하면, 구체가 체크무늬를 구성한체로 생성된다고 이해하면 된다. 그림으로 그려보았다면, 이제 ..

  • 먼저 카메라의 움직임을 구현하기 전에 먼저 카메라의 위치값과 이동을 확인하기 위해 배경지식이 필요하다. 각각 코사인 제1법칙, 제2법칙. 그리고 벡터의 내적 외적을 알아야 한다. 이러한 벡터의 내적과 외적계산을 통해 더 쉽게 카메라의 움직임을 구현할 수 있다. camera Header #pragma once class Camera : public Transform { public: Camera(); ~Camera(); void Update(); void GUIRender(); void SetView(); private: void FreeMode(); private: MatrixBuffer* viewBuffer; Matrix view; float moveSpeed = 50.0f; float rotSpeed..