|
@@ -79,6 +79,7 @@
|
|
|
- your code creates the UI, if your code doesn't run the UI is gone! == very dynamic UI, no construction/destructions steps, less data retention on your side, no state duplication, less sync, less bugs.
|
|
|
- call and read ImGui::ShowTestWindow() for demo code demonstrating most features.
|
|
|
- see examples/ folder for standalone sample applications. Prefer reading examples/opengl_example/ first at it is the simplest.
|
|
|
+ you may be able to grab and copy a ready made imgui_impl_*** file from the examples/.
|
|
|
- customization: PushStyleColor()/PushStyleVar() or the style editor to tweak the look of the interface (e.g. if you want a more compact UI or a different color scheme).
|
|
|
|
|
|
- getting started:
|
|
@@ -86,12 +87,13 @@
|
|
|
- init: call io.Fonts->GetTexDataAsRGBA32(...) and load the font texture pixels into graphics memory.
|
|
|
- every frame:
|
|
|
1/ in your mainloop or right after you got your keyboard/mouse info, call ImGui::GetIO() and fill the fields marked 'Input'
|
|
|
- 2/ call ImGui::NewFrame().
|
|
|
+ 2/ call ImGui::NewFrame() as early as you can!
|
|
|
3/ use any ImGui function you want between NewFrame() and Render()
|
|
|
- 4/ call ImGui::Render() to render all the accumulated command-lists. it will call your RenderDrawListFn handler that you set in the IO structure.
|
|
|
+ 4/ call ImGui::Render() as late as you can to end the frame and finalize render data. it will call your RenderDrawListFn handler that you set in the IO structure.
|
|
|
+ (if you don't need to render, you still need to call Render() and ignore the callback, or call EndFrame() instead. if you call neither some aspects of windows focusing/moving will appear broken.)
|
|
|
- all rendering information are stored into command-lists until ImGui::Render() is called.
|
|
|
- - ImGui never touches or know about your GPU state. the only function that knows about GPU is the RenderDrawListFn handler that you must provide.
|
|
|
- - effectively it means you can create widgets at any time in your code, regardless of considerations of being in "update" vs "render" phases.
|
|
|
+ - ImGui never touches or know about your GPU state. the only function that knows about GPU is the RenderDrawListFn handler that you provide.
|
|
|
+ - effectively it means you can create widgets at any time in your code, regardless of considerations of being in "update" vs "render" phases of your own application.
|
|
|
- refer to the examples applications in the examples/ folder for instruction on how to setup your code.
|
|
|
- a typical application skeleton may be:
|
|
|
|
|
@@ -135,7 +137,7 @@
|
|
|
|
|
|
// 4) render & swap video buffers
|
|
|
ImGui::Render();
|
|
|
- // swap video buffer, etc.
|
|
|
+ SwapBuffers();
|
|
|
}
|
|
|
|
|
|
- after calling ImGui::NewFrame() you can read back flags from the IO structure to tell how ImGui intends to use your inputs.
|