Thanks for asking! I use the docking branch of dear imgui, which lets you dock windows like in that image.
The dockspace example code (and accompanying comments) in imgui_demo.cpp does everything I need, if I remember correctly.
I just create the dockspace by calling ImGui::Begin and ImGui::DockSpace, then I call ImGui::BeginMenuBar and do everything that's in the menu at the very top of the screen (File, Edit, the Rewind timeline etc), then I call ImGui::EndMenuBar and ImGui::End. After that, I just make all of those other windows ("Game", "Visibility", "Achievements", "Progression" etc) by calling ImGui::Begin, then the window contents, then ImGui::End, just like normal.
The "Game" window uses ImGui::Image to display the contents of the main game framebuffer, along with some additional code to force its aspect ratio to 16:9 and to fudge my in-game mouse positions so I can click on things in the game.
I learned pretty much everything I know about dear imgui from the imgui_demo.cpp example code (which you can see in your game by calling ImGui::ShowDemoWindow) and from the "examples" folder that shows you how to hook it up to OpenGL, DirectX and so on. So I recommend checking those out too. But me know if there's anything I missed out!




