Updated Quickstart (markdown)
parent
ab9e685e24
commit
8b6cd9dbe8
@ -11,6 +11,7 @@ If you have issues integrating Dear ImGui in your app, most of the time to easie
|
|||||||
- [Example: If you are using GLFW + OpenGL/WebGL](#example-if-you-are-using-glfw--openglwebgl)
|
- [Example: If you are using GLFW + OpenGL/WebGL](#example-if-you-are-using-glfw--openglwebgl)
|
||||||
- [Example: If you are using GLFW + Metal (on Apple devices)](#example-if-you-are-using-glfw--metal-on-apple-devices)
|
- [Example: If you are using GLFW + Metal (on Apple devices)](#example-if-you-are-using-glfw--metal-on-apple-devices)
|
||||||
- [Example: If you are using SDL2 + OpenGL/WebGL](#example-if-you-are-using-sdl2--openglwebgl)
|
- [Example: If you are using SDL2 + OpenGL/WebGL](#example-if-you-are-using-sdl2--openglwebgl)
|
||||||
|
- [Example: If you are using SDL2 + Vulkan](#example-if-you-are-using-sdl2--vulkan)
|
||||||
- [Using another combination of backends?](#using-another-combination-of-backends)
|
- [Using another combination of backends?](#using-another-combination-of-backends)
|
||||||
|
|
||||||
## Compiling/Linking
|
## Compiling/Linking
|
||||||
@ -306,6 +307,87 @@ ImGui::DestroyContext();
|
|||||||
```
|
```
|
||||||
That should be all!
|
That should be all!
|
||||||
|
|
||||||
|
## Example: If you are using SDL2 + Vulkan
|
||||||
|
|
||||||
|
Full standalone example: [example_sdl2_vulkan/main.cpp](https://github.com/ocornut/imgui/blob/master/examples/example_sdl2_vulkan/main.cpp)
|
||||||
|
|
||||||
|
Unfortunately this is the most complex one and may not work with all app setups. We are always working on making imgui_impl_vulkan.cpp more compatible with existing engines, so please don't hesitate to post feedback.
|
||||||
|
|
||||||
|
Add to Includes:
|
||||||
|
```cpp
|
||||||
|
#include "imgui.h"
|
||||||
|
#include "imgui_impl_sdl2.h"
|
||||||
|
#include "imgui_impl_vulkan.h"
|
||||||
|
|
||||||
|
static void check_vk_result(VkResult err)
|
||||||
|
{
|
||||||
|
if (err == 0)
|
||||||
|
return;
|
||||||
|
fprintf(stderr, "[vulkan] Error: VkResult = %d\n", err);
|
||||||
|
if (err < 0)
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Add to Initialization:
|
||||||
|
```cpp
|
||||||
|
// Setup Dear ImGui context
|
||||||
|
IMGUI_CHECKVERSION();
|
||||||
|
ImGui::CreateContext();
|
||||||
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // IF using Docking Branch
|
||||||
|
|
||||||
|
// Setup Platform/Renderer backends
|
||||||
|
ImGui_ImplSDL2_InitForVulkan(YOUR_SDL_WINDOW);
|
||||||
|
ImGui_ImplVulkan_InitInfo init_info = {};
|
||||||
|
init_info.Instance = YOUR_INSTANCE;
|
||||||
|
init_info.PhysicalDevice = YOUR_PHYSICAL_DEVICE;
|
||||||
|
init_info.Device = YOUR_DEVICE;
|
||||||
|
init_info.QueueFamily = YOUR_QUEUE_FAMILY;
|
||||||
|
init_info.Queue = YOUR_QUEUE;
|
||||||
|
init_info.PipelineCache = YOUR_PIPELINE_CACHE;
|
||||||
|
init_info.DescriptorPool = YOUR_DESCRIPTOR_POOL;
|
||||||
|
init_info.Subpass = 0;
|
||||||
|
init_info.MinImageCount = 2;
|
||||||
|
init_info.ImageCount = 2;
|
||||||
|
init_info.MSAASamples = VK_SAMPLE_COUNT_1_BIT;
|
||||||
|
init_info.Allocator = YOUR_ALLOCATOR;
|
||||||
|
init_info.CheckVkResultFn = check_vk_result;
|
||||||
|
ImGui_ImplVulkan_Init(&init_info, wd->RenderPass);
|
||||||
|
// (this gets a bit more complicated, see example app for full reference)
|
||||||
|
ImGui_ImplVulkan_CreateFontsTexture(YOUR_COMMAND_BUFFER);
|
||||||
|
// (your code submit a queue)
|
||||||
|
ImGui_ImplVulkan_DestroyFontUploadObjects();
|
||||||
|
```
|
||||||
|
Add to start of main loop:
|
||||||
|
```cpp
|
||||||
|
// (Where your code calls SDL_PollEvent())
|
||||||
|
ImGui_ImplSDL2_ProcessEvent(&event); // Forward your event to backend
|
||||||
|
|
||||||
|
// (After event loop)
|
||||||
|
// Start the Dear ImGui frame
|
||||||
|
ImGui_ImplVulkan_NewFrame();
|
||||||
|
ImGui_ImplSDL2_NewFrame();
|
||||||
|
ImGui::NewFrame();
|
||||||
|
ImGui::ShowDemoWindow(); // Show demo window! :)
|
||||||
|
```
|
||||||
|
Add to end of main loop:
|
||||||
|
```cpp
|
||||||
|
// Rendering
|
||||||
|
// (Your code clears your framebuffer, renders your other stuff etc.)
|
||||||
|
ImGui::Render();
|
||||||
|
ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), YOUR_COMMAND_BUFFER);
|
||||||
|
// (Your code calls vkCmdEndRenderPass, vkQueueSubmit, vkQueuePresentKHR etc.)
|
||||||
|
```
|
||||||
|
Add to Shutdown:
|
||||||
|
```cpp
|
||||||
|
ImGui_ImplVulkan_Shutdown();
|
||||||
|
ImGui_ImplSDL2_Shutdown();
|
||||||
|
ImGui::DestroyContext();
|
||||||
|
```
|
||||||
|
That should be all!
|
||||||
|
|
||||||
## Using another combination of backends?
|
## Using another combination of backends?
|
||||||
|
|
||||||
The various examples above should reflect integration with a majority of backends, so you can follow the same logic.
|
The various examples above should reflect integration with a majority of backends, so you can follow the same logic.
|
||||||
|
Loading…
Reference in New Issue
Block a user