Computer Graphics/Vulkan

Vulkan - 8. 키보드 마우스 입력 추가와 imgui 적용

surkim 2025. 1. 2. 11:46

키보드 마우스 입력 추가는 예전에 Opengl에서 하던거 가져와서 쉽게 적용했고

 

imgui 요녀석이 문제가 많았다.

심지어 아직 잠정적인 문제가 많은 상태지만

간이로 만들어 놓은거기 때문에 일단 쓰고 나중에 고치자

 

일단 결과물 부터!

0

오브젝트 추가할 때마다 imgui에서도 작업해줄 필요없이 오브젝트 벡터를 순회하면서 자동으로 추가되게끔 만들었다.

지금은 렌더링할 때 light object를 제일 앞에 추가해서 구형 형태로 light 위치가 보이게 만들었는데 (심지어 텍스쳐 그냥 sample텍스쳐 가져다 썼다.)

이러니깐 shader에서 보는 것은 scene의 light위치고 light object 위치와는 값만 같지 다른 녀석이라

imgui에서 값을 변경할 때  얘만 특별취급을 해야한다. (scene의 위치와 light object의 위치를 동시에 변경)

일단 간이로 맞춰준거라 짜치지만 어쩔 수 없고

 

그것보다 더 짜치는게

우선 좀 imgui이야기를 좀 해야하는데

이게 opengl에서는 그냥 제출용 프레임버퍼에다가 제일 마지막에 덧대 그리면 되니깐

설정도 쉽고 그리기도 쉬웠는데

 

vulkan에서는 이게 말처럼 쉬운게 아니다. renderpass의 개념이 들어왔기 때문이다.

imgui가 본인 용 renderpass를 직접 만들어주지 않아서

우리가 기존의 renderpass를 가져와서 혹은 수정해서 잇거나 imgui용도의 renderpass를 따로 만들어줘야하는데

 

첫 시도는 imgui용 renderpass를 따로 만들어서 그려줄려고 했다가

여기저기 터져나가서 계속 연구를 해봤는데

결국 renderpass를 새로 만들면

그 renderpass용 framebuffer, commandbuffer, descriptor pool을 새로 만들어 줘야겠다는게 내 결론이다.

 

아직 renderpass를 새로 만들어쓰는거엔 익숙하지 않아서 + 지금은 pbr 디버깅용 대충 만들어 놓은거라 

쉽게쉽게 main renderpass의 두번째 subpass인 lightpass에 기생해서 그려 버렸다.

 

지금은 잘 그려진다만 subpass가 imgui전용으로 만들어진게 아니라서

언제든 터질 수 있다는거 감안하고 이제 진행해야한다 ㅠㅠ

 

그래도 이제 디버깅 좀 편하게 진행할 수 있따!