기타/DirectX

[DirectX11] 5일차 (삼각형 그리기 / 클래스 캡슐화)

푸쿠이 2021. 2. 19. 17:53

오늘은 AWS에서 온 메일을 처리한다고 제대로 집중못했다.....

 

AWS 사건 전말

2018년에 고등학교를 다니면서, 공부 목적으로 AWS에 회원가입한 적이 있었다.

 

이리저리 튜토리얼을 따라하다가 어려워서 포기했는데,

만들어 놓은 서비스를 제대로 종료 안 시키고 중단만 시켜놔서 비용이 청구되고 있었다.

 

이게 1년만 무료였고, 그 뒤로 1달에 1달러씩 나가고 있었다. 많이 당황했다.

총 16개월로 16달러가 나갔는데, 환불 문의를 넣어서 다행히 돌려준다고 답변 받았다. 휴.

문의 답변이 엄청 빠르고 친절해서 좋았다.

 

이게 1달러가 아니었으면 어쩔 뻔 했나........... 정말 곤란한 순간이었다.

 

많은 cpp, header 파일 정리

요즘 언리얼에서는 public과 private 폴더로 나눈다고 한다.

private에는 cpp파일을, public에는 header파일을 넣어놓는다.

math에 관련된거면 math 폴더 안에 private, public 이렇게.

 

cpp파일은 dll이나 lib로 만들어버리고,

사용자들은 틀을 알아야 하니까 header파일만 공개하는 것이다.

 

로직은 감추고, 틀은 공개하는 그런 방식이다.

 

원래 이렇게 더러웠는데, 이렇게 정리해보자.

cpp파일에서 #include 헤더파일 하는곳에서 오류가 날 것이다.

 

#include "../public/Vertex.h" 이렇게 상대 경로로 해도 되지만,

프로젝트 속성에서 포함 디렉토리 설정을 해주면 된다.

그럼 경로 오류가 해결된다.

 

근데 비주얼 스튜디오에서는 잘 될텐데, 빌드한 exe파일을 열면 오류가 날 것이다.

.cpp파일에서의 Shader파일 상대 경로와, exe파일에서의 Shader파일 상대 경로가 달라서 못 찾아서 그렇다.

 

빌드 이벤트로 찾는 파일 경로에 Shader파일을 복사했다.

빌드 후 이벤트니까 exe파일이 생성되고 난 후의 이벤트이다.

exe의 상대 경로에 shader 폴더를 만들고, 기존 shader 폴더를 복사하는 명령이다.

경로에 공백이 있을 경우, 명령에 " "는 무조건 넣어줘야 한다. 아니면 오류 남.

if not exist "$(OutDir)..\shaders" mkdir "$(OutDir)..\shaders"

copy "$(SolutionDir)\shaders\*" "$(OutDir)..\shaders\"

복잡한 프로젝트에서는 이런 이벤트를 이용해서 cpp를 lib로 빌드하고 뭐하고 이렇게 한다고 한다.

한번도 건드려보지않았던 프로젝트 설정이라 신기하다.

 

 

.cso 파일은 쉐이더 코드를 컴파일해서 나온 결과물인데, 우리가 쉐이더를 쓰기 위해서 나온 잠시의 찌꺼기?이다.

exe파일을 실행할 때는 아무 상관 없기 때문에, 설정해서 안 만들어지게 할 수 있다.

귀찮으면 빌드하고 경로찾아가서 수동으로 cso파일 삭제해도 된다.

 

 

배포할 때는 이렇게 exe파일을 바로가기로 꺼낸 뒤에, 압축해서 배포하면 된다.

개발자 아니면 찾기 힘들니까?

배포할거면 바로가기 이름을 좀 멋있게 바꾸자. ㅎㅎ

exe 파일 실행하면 잘 실행된다. ㅎㅎ

 

오늘 작성한 DirectX 코드

오늘은 Shader와 Mesh들을 클래스로 나누어서 캡슐화를 진행하고, 삼각형 그리기까지 제작했다.

 

mingyu243/STL_GraphicsEngine2

Contribute to mingyu243/STL_GraphicsEngine2 development by creating an account on GitHub.

github.com