Graphics Programming

Dear ImGui 본문

Season 2

Dear ImGui

minseoklee 2023. 3. 12. 20:27

DX12 토이 프로젝트인 Cyseal에 Dear ImGui를 붙여봤다.

Dear ImGui는 렌더링 테크데모, 게임 엔진 등의 분야에서 많이 쓰이는 imgui 라이브러리다. 이전 회사에서 같이 일했던 선임 엔지니어 분이 간단한 엔진 툴을 만들 때 써봤는데 매우 직관적이고 사용하기 편리하다고 추천하셨던 기억이 난다.

나도 Dear ImGui에 편승하기로 했다. 듣던 대로 통합하기도 쉽고 사용법도 간단했다. 내 프로젝트에서 Vulkan 백엔드가 제대로 돌지 않고 있기 때문에 일단은 imgui의 win32 + dx12 백엔드 부분만 통합했다.

처음에 그려보니 글자가 살짝 흐릿하고 마우스 히트 테스트가 어긋나는 문제가 있었는데, 내가 swapchain 이미지들의 크기를 윈도우 client rect와 정확히 일치시키지 않아서였다. win32 윈도우를 생성할 때 지정하는 크기는 윈도우 전체의 크기고 타이틀 바, 테두리 등을 뺀 client rect는 좀 더 작다. Cyseal은 윈도우 리사이즈 이벤트를 받아서 스왑체인 이미지를 재생성하는데, 이때는 client rect를 제대로 반영하므로 리사이즈 후에는 이 문제들이 해결된다. 윈도우 크기를 조절해보고 이 문제인 것을 깨달았다. 내 OpenGL 프로젝트에도 똑같은 문제가 발생할 것 같은데 여기서는 제대로 처리를 해놨는지 나중에 살펴봐야겠다.

이제 특정 렌더 패스만 토글한다던가 하는 옵션을 GUI로 컨트롤할 수 있게 되었다. 통합 난이도를 보아하니 OpenGL 프로젝트에도 Dear ImGui를 그냥 붙이면 잘 동작할 거 같지만, GUI 직접 코딩해놓은 것 버리기 싫어서 아마 Dear ImGui는 안 붙일 듯...

Comments