그래픽스

프로젝트 세팅

춤추는수달 2021. 10. 7. 20:20

어떤 프로젝트?

이 글은 아래에 있는 Inflearn의 Rookies님의 강의를 보고 제 나름대로의 필기입니다.

https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-2/dashboard

 

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12 - 인프런 | 강의

DirectX 12를 통해 그래픽스 기초를 학습하는 강의입니다. 3D 세상의 물체가 어떤 원리로 모니터 화면에 그려지는지 공부하게 됩니다., MMORPG 개발에 필요한 모든 기술, C++ & Unreal로 Step By Step! 🕹️

www.inflearn.com

이 강의에선 간단한 그래픽 엔진을 만들어 볼 것 같습니다. 여기서 그래픽 엔진이란 DirectX를 활용해 GPU를 직접 사용해서 화면에 원하는 것을 출력해주는 프로그램 정도로 이해하면 될 것 같습니다. 강의를 더 듣고 부족한 설명이었다면 추가할 예정입니다.


새 프로젝트

여기선 VisualStudio 2019를 사용한다. 일단 새 프로젝트 만들기에서 Windows 데스크톱 애플리케이션을 선택해서 만들어준다.

Windows 데스크톱 애플리케이션.

솔루션 명은 일단 Game ,그리고 프로젝트 명은 Client 이다. 

바로 솔루션 내에 정적 라이브러리 템플릿으로 두 번째 프로젝트를 추가해준다. 이 프로젝트의 이름은 Engine 이다.

정적 라이브러리.

이렇게 한 솔루션을 두 프로젝트로 분리하여 만든 이유는 Engine의 기능을 재사용하기 위함이라고 할 수 있겠다.

각 프로젝트의 목적 및 기능을 설명하자면, Client는 Engine을 사용하여 자신의 게임 로직, UI구성 등을 구현하고, 

Enigne 은 정적 라이브러리로서 DirectX를 사용해 그래픽카드와 대화하며 Client가 그려달라고 부탁하는 것들을 그려준다. 즉, 완벽한 분업이고 Engine을 사용해 Client와 같은 여러 프로젝트에 사용할 수 있게 되는 것이다.

 

그런데 이렇게 한 솔루션에 Client 프로젝트와 Engine 프로젝트를 같이 두었다고 해서, Client프로젝트에서 Enigne 프로젝트의 기능을 활용할 수는 없다. Client가 Enigne 프로젝트의 결과물인 정적 라이브러리를 사용하기 위해서는 몇 가지 알아야할 것이 있다.

  1. 라이브러리 디렉터리 : lib 파일의 경로
  2. 포함 디렉터리 : 헤더파일의 경로 

정적 라이브러리를 사용할 프로젝트에서는 위 두 경로를 프로젝트에게 알려줄 필요가 있다. 어떻게 알려주는지 알아보기 전에 왜 알려주어야 하는지 알아보자.

 

lib 파일은 정적 라이브러리를 빌드하면 그 결과물로 생성되는 파일이다. 이 파일에는 정적 라이브러리의 실질적인 동작 내용이 담겨있다. cpp 파일과 같다고 생각하면 된다.

헤더파일은 우리가 이미 잘 사용하고 있는 그 헤더파일이다. 정적 라이브러리 프로젝트의 각종 선언문을 모아둔 것이다. 

 

즉, 헤더파일 경로를 프로젝트에 알려주어 라이브러리의 헤더를 include 문으로 포함해주어 컴파일을 가능하게 한다.

라이브러리 경로를 알려주어 링크 시에 lib 파일을 사용해 실제 동작 코드와 연결해줄 수 있는 것이다.

 

그렇다면 어떻게 경로를 알려줄 수 있을까? 방법은 여러 가지가 있다. 여기서 사용한 방법을 소개해 주겠다. 

  1. 먼저 라이브러리를 사용할 프로젝트의 속성을 연다.
  2. [구성속성]->[VC++ 디렉터리] 로 이동한다.
  3. 포함디렉터리는 헤더파일이 있는 경로를, 라이브러리 디렉터리는 lib파일이 있는 경로를 추가해준다.

[구성속성]->[VC++디렉터리]

경로를 추가하는 방법을 모를 수 있다. 그런 경우 다음 과정을 따라하면 된다.

  1. 포함 디렉터리를 클릭하고 오른쪽의 드롭다운 리스트를 내려보면 <편집> 이 있다. 이걸 클릭해주면 이런 창이 나온다.

경로 추가

노란색 파일 모양 아이콘을 누르면 줄을 추가할 수 있다. 그러면 위 이미지처럼 파란 줄이 생기는데 여기에 추가해줄 경로를 입력하고 아래의 확인 버튼을 누르면 아래 평가 값에 내가 입력한 줄이 추가된 것을 확인할 수 있다.

추가된 후 프로젝트 속성 창

 

그런데 이렇게만 하면 컴바일 에러가 발생한다. 경로를 알려준 것 이외에 해당 라이브러리를 사용하겠다는 명시를 해야한다.

다음 코드를 넣으면 된다.

#pragma comment(lib,"Engine.lib")

 

지금까지 각 프로젝트와 솔루션의 의미에 대해 알아보았다.

다음 글에선 프로젝트 내에 어떤 파일과 어떤 클래스들이 있는지 살펴보고 각각의 의미에 대해 알아보장.