현재까지의 구현 상황
https://www.youtube.com/watch?v=B1nO5wbPbwg&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=106
Hazel Engine 영상 시리즈를 보면서 Box2D 물리엔진을 적용하고 엔진을 테스트 해보는 영상입니다.
어느정도 게임엔진에 필요한 것을 많이 구현했다고 생각해서 올리게 되었습니다.
이 영상만 해도 재생목록에서 벌써 106번째 영상이네요. 1달정도 걸린 것 같습니다.
Hazel Engine과 다른 점은 제가 직접 짜본 DirectX11 API를 추가로 구현되었다는 점입니다.
OpenGL로 코드 짜는 것을 보면서
"어 이거 DX11 그래픽스 강의에서 비슷한 개념을 배운 것 같은데?"라고 생각했지만
이걸 구조에 맞게 실제로 구현하는 것은 또 어려웠습니다.
특히 OpenGL은 코드 구조가 많이 다른 것 같았습니다.
하지만 DX11 API와 그래픽스 파이프라인을 더 잘 이해할 수 있게 된 것 같습니다.
그래도 Hazel에서 만든 구조를 깨지 않으려고 하면서 코드를 짰는데 렌더링 API를 OpenGL ▶ DX11로 바꿔도 엔진 자체 코드는 수정할 필요가 없게 잘 동작해서 기분이 좋습니다.
객체지향원칙을 지켰는지는 잘 모르겠는데 아무튼 잘 작동합니다.
나중에 Hazel Dev github(후원자 전용)에 액세스하면 이 유튜버가 짜놓은 Vulkan 구조를 보면서 DirectX11을 개선할 수 있을것 같은데 한번 고민해봐야 겠습니다.
다만 ImGui의 이미지 기능을 쓰기 위해서 OpenGL에서는 텍스쳐를 RendererID로 받아서 그림을 그릴 수 있는데 DX11은 ID3D11ShaderResourceView로 받아야 하는 것과 같은 경우가 있었습니다.
이 부분은 딱히 좋은 방법이 생각나지 않아 전처리기 #if문으로 받았습니다.
사실 전처리기말고 그냥 if문으로도 할 수 있는데 이렇게 쓰기가 귀찮더라구요.
그리고 DX11로 짠 코드가 Debug 모드에서 최대화면을 적용하면 프레임이 수직낙하 하는 것을 확인할 수 있었습니다.
실제로 프레임도 뚝뚝 끊기는게 아무래도 코드가 최적화가 덜 된 것 같습니다.
그래서 테스트할때는 Release 모드로 돌리니 프레임이 잘나와서 일단 이렇게 테스트는 하고 있는데
벌써 이러면 3D 렌더링은 어쩌나 걱정입니다.
그리고 delta time이 Vsync가 설정되어 있을 때 모니터 주사율에 의해서 결정되는 것 같아서 신기했습니다. 아니라면 죄송합니다.
다음 계획
다음 계획은 윈도우 커스텀 타이틀 바 구현입니다.
언리얼이나 비주얼 스튜디오를 보면 이렇게 깔끔한 커스텀 타이틀바를 사용하는 것을 볼 수 있습니다.
현재의 타이틀 바를 보면 위의 프로그램들처럼 깔끔하게 이어진다고 보기에는 어렵죠.
사실 이런부분 만드는 게 또 프로그램을 있어보이게 만들어주니까 시도해보고 싶어졌습니다.
다음에는 아래의 영상을 참고하여 타이틀바를 수정할 계획입니다.
또 The Cherno의 영상입니다.
https://youtu.be/-NJDxf4XwlQ?si=up4mjaG7FPph4Avs
'개인 공부 및 프로젝트 > Steins; Engine' 카테고리의 다른 글
테트리스 (0) | 2024.01.21 |
---|---|
윈도우 커스텀 제목 표시줄(custom titlebar) 제작 (1) | 2023.11.04 |
Hazel 엔진 DX11 포팅(VertexBuffer, Shader) (0) | 2023.10.11 |
Hazel에 DirectX11을 붙이면서 생기는 문제 해결하기 - 1 (2) | 2023.10.07 |
Hazel Engine - Imgui LNK2019오류 해결법 (0) | 2023.09.30 |