mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Demo: Added 'Examples->Fullscreen Window' demo. (#3789) + repack and zero-clear ImDrawData.
This commit is contained in:
parent
58a0a7058c
commit
b898281e3c
@ -78,6 +78,7 @@ Other Changes:
|
|||||||
- Log/Capture: Improved the ascii look of various widgets, making large dumps more easily human readable.
|
- Log/Capture: Improved the ascii look of various widgets, making large dumps more easily human readable.
|
||||||
- ImDrawList: Fixed AddCircle()/AddCircleFilled() with (rad > 0.0f && rad < 1.0f && num_segments == 0). (#3738)
|
- ImDrawList: Fixed AddCircle()/AddCircleFilled() with (rad > 0.0f && rad < 1.0f && num_segments == 0). (#3738)
|
||||||
Would lead to a buffer read overflow.
|
Would lead to a buffer read overflow.
|
||||||
|
- Demo: Added 'Examples->Fullscreen Window' demo. (#3789)
|
||||||
- Backends: Win32: Dynamically loading XInput DLL instead of linking with it, facilite compiling with
|
- Backends: Win32: Dynamically loading XInput DLL instead of linking with it, facilite compiling with
|
||||||
old WindowSDK versions or running on Windows 7. (#3646, #3645, #3248, #2716) [@Demonese]
|
old WindowSDK versions or running on Windows 7. (#3646, #3645, #3248, #2716) [@Demonese]
|
||||||
- Backends: Vulkan: Add support for custom Vulkan function loader and VK_NO_PROTOTYPES. (#3759, #3227) [@Hossein-Noroozpour]
|
- Backends: Vulkan: Add support for custom Vulkan function loader and VK_NO_PROTOTYPES. (#3759, #3227) [@Hossein-Noroozpour]
|
||||||
|
@ -75,7 +75,7 @@ int main(int, char**)
|
|||||||
//ImGui::StyleColorsClassic();
|
//ImGui::StyleColorsClassic();
|
||||||
|
|
||||||
// Setup Platform/Renderer backends
|
// Setup Platform/Renderer backends
|
||||||
ImGui_ImplGlfw_InitForVulkan(window, true);
|
ImGui_ImplGlfw_InitForWebGPU(window, true);
|
||||||
ImGui_ImplWGPU_Init(wgpu_device, 3, WGPUTextureFormat_RGBA8Unorm);
|
ImGui_ImplWGPU_Init(wgpu_device, 3, WGPUTextureFormat_RGBA8Unorm);
|
||||||
|
|
||||||
// Load Fonts
|
// Load Fonts
|
||||||
|
7
imgui.h
7
imgui.h
@ -2461,18 +2461,17 @@ struct ImDrawList
|
|||||||
struct ImDrawData
|
struct ImDrawData
|
||||||
{
|
{
|
||||||
bool Valid; // Only valid after Render() is called and before the next NewFrame() is called.
|
bool Valid; // Only valid after Render() is called and before the next NewFrame() is called.
|
||||||
ImDrawList** CmdLists; // Array of ImDrawList* to render. The ImDrawList are owned by ImGuiContext and only pointed to from here.
|
|
||||||
int CmdListsCount; // Number of ImDrawList* to render
|
int CmdListsCount; // Number of ImDrawList* to render
|
||||||
int TotalIdxCount; // For convenience, sum of all ImDrawList's IdxBuffer.Size
|
int TotalIdxCount; // For convenience, sum of all ImDrawList's IdxBuffer.Size
|
||||||
int TotalVtxCount; // For convenience, sum of all ImDrawList's VtxBuffer.Size
|
int TotalVtxCount; // For convenience, sum of all ImDrawList's VtxBuffer.Size
|
||||||
|
ImDrawList** CmdLists; // Array of ImDrawList* to render. The ImDrawList are owned by ImGuiContext and only pointed to from here.
|
||||||
ImVec2 DisplayPos; // Upper-left position of the viewport to render (== upper-left of the orthogonal projection matrix to use)
|
ImVec2 DisplayPos; // Upper-left position of the viewport to render (== upper-left of the orthogonal projection matrix to use)
|
||||||
ImVec2 DisplaySize; // Size of the viewport to render (== io.DisplaySize for the main viewport) (DisplayPos + DisplaySize == lower-right of the orthogonal projection matrix to use)
|
ImVec2 DisplaySize; // Size of the viewport to render (== io.DisplaySize for the main viewport) (DisplayPos + DisplaySize == lower-right of the orthogonal projection matrix to use)
|
||||||
ImVec2 FramebufferScale; // Amount of pixels for each unit of DisplaySize. Based on io.DisplayFramebufferScale. Generally (1,1) on normal display, (2,2) on OSX with Retina display.
|
ImVec2 FramebufferScale; // Amount of pixels for each unit of DisplaySize. Based on io.DisplayFramebufferScale. Generally (1,1) on normal display, (2,2) on OSX with Retina display.
|
||||||
|
|
||||||
// Functions
|
// Functions
|
||||||
ImDrawData() { Valid = false; Clear(); }
|
ImDrawData() { Clear(); }
|
||||||
~ImDrawData() { Clear(); }
|
void Clear() { memset(this, 0, sizeof(*this)); } // The ImDrawList are owned by ImGuiContext!
|
||||||
void Clear() { Valid = false; CmdLists = NULL; CmdListsCount = TotalVtxCount = TotalIdxCount = 0; DisplayPos = DisplaySize = FramebufferScale = ImVec2(0.f, 0.f); } // The ImDrawList are owned by ImGuiContext!
|
|
||||||
IMGUI_API void DeIndexAllBuffers(); // Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering!
|
IMGUI_API void DeIndexAllBuffers(); // Helper to convert all buffers from indexed to non-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering!
|
||||||
IMGUI_API void ScaleClipRects(const ImVec2& fb_scale); // Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than Dear ImGui expects, or if there is a difference between your window resolution and framebuffer resolution.
|
IMGUI_API void ScaleClipRects(const ImVec2& fb_scale); // Helper to scale the ClipRect field of each ImDrawCmd. Use if your final output buffer is at a different scale than Dear ImGui expects, or if there is a difference between your window resolution and framebuffer resolution.
|
||||||
};
|
};
|
||||||
|
@ -63,8 +63,9 @@ Index of this file:
|
|||||||
// [SECTION] Example App: Long Text / ShowExampleAppLongText()
|
// [SECTION] Example App: Long Text / ShowExampleAppLongText()
|
||||||
// [SECTION] Example App: Auto Resize / ShowExampleAppAutoResize()
|
// [SECTION] Example App: Auto Resize / ShowExampleAppAutoResize()
|
||||||
// [SECTION] Example App: Constrained Resize / ShowExampleAppConstrainedResize()
|
// [SECTION] Example App: Constrained Resize / ShowExampleAppConstrainedResize()
|
||||||
// [SECTION] Example App: Simple Overlay / ShowExampleAppSimpleOverlay()
|
// [SECTION] Example App: Simple overlay / ShowExampleAppSimpleOverlay()
|
||||||
// [SECTION] Example App: Manipulating Window Titles / ShowExampleAppWindowTitles()
|
// [SECTION] Example App: Fullscreen window / ShowExampleAppFullscreen()
|
||||||
|
// [SECTION] Example App: Manipulating window titles / ShowExampleAppWindowTitles()
|
||||||
// [SECTION] Example App: Custom Rendering using ImDrawList API / ShowExampleAppCustomRendering()
|
// [SECTION] Example App: Custom Rendering using ImDrawList API / ShowExampleAppCustomRendering()
|
||||||
// [SECTION] Example App: Documents Handling / ShowExampleAppDocuments()
|
// [SECTION] Example App: Documents Handling / ShowExampleAppDocuments()
|
||||||
|
|
||||||
@ -168,6 +169,7 @@ static void ShowExampleAppLongText(bool* p_open);
|
|||||||
static void ShowExampleAppAutoResize(bool* p_open);
|
static void ShowExampleAppAutoResize(bool* p_open);
|
||||||
static void ShowExampleAppConstrainedResize(bool* p_open);
|
static void ShowExampleAppConstrainedResize(bool* p_open);
|
||||||
static void ShowExampleAppSimpleOverlay(bool* p_open);
|
static void ShowExampleAppSimpleOverlay(bool* p_open);
|
||||||
|
static void ShowExampleAppFullscreen(bool* p_open);
|
||||||
static void ShowExampleAppWindowTitles(bool* p_open);
|
static void ShowExampleAppWindowTitles(bool* p_open);
|
||||||
static void ShowExampleAppCustomRendering(bool* p_open);
|
static void ShowExampleAppCustomRendering(bool* p_open);
|
||||||
static void ShowExampleMenuFile();
|
static void ShowExampleMenuFile();
|
||||||
@ -259,6 +261,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|||||||
static bool show_app_auto_resize = false;
|
static bool show_app_auto_resize = false;
|
||||||
static bool show_app_constrained_resize = false;
|
static bool show_app_constrained_resize = false;
|
||||||
static bool show_app_simple_overlay = false;
|
static bool show_app_simple_overlay = false;
|
||||||
|
static bool show_app_fullscreen = false;
|
||||||
static bool show_app_window_titles = false;
|
static bool show_app_window_titles = false;
|
||||||
static bool show_app_custom_rendering = false;
|
static bool show_app_custom_rendering = false;
|
||||||
|
|
||||||
@ -273,6 +276,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|||||||
if (show_app_auto_resize) ShowExampleAppAutoResize(&show_app_auto_resize);
|
if (show_app_auto_resize) ShowExampleAppAutoResize(&show_app_auto_resize);
|
||||||
if (show_app_constrained_resize) ShowExampleAppConstrainedResize(&show_app_constrained_resize);
|
if (show_app_constrained_resize) ShowExampleAppConstrainedResize(&show_app_constrained_resize);
|
||||||
if (show_app_simple_overlay) ShowExampleAppSimpleOverlay(&show_app_simple_overlay);
|
if (show_app_simple_overlay) ShowExampleAppSimpleOverlay(&show_app_simple_overlay);
|
||||||
|
if (show_app_fullscreen) ShowExampleAppFullscreen(&show_app_fullscreen);
|
||||||
if (show_app_window_titles) ShowExampleAppWindowTitles(&show_app_window_titles);
|
if (show_app_window_titles) ShowExampleAppWindowTitles(&show_app_window_titles);
|
||||||
if (show_app_custom_rendering) ShowExampleAppCustomRendering(&show_app_custom_rendering);
|
if (show_app_custom_rendering) ShowExampleAppCustomRendering(&show_app_custom_rendering);
|
||||||
|
|
||||||
@ -354,6 +358,7 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
|||||||
ImGui::MenuItem("Auto-resizing window", NULL, &show_app_auto_resize);
|
ImGui::MenuItem("Auto-resizing window", NULL, &show_app_auto_resize);
|
||||||
ImGui::MenuItem("Constrained-resizing window", NULL, &show_app_constrained_resize);
|
ImGui::MenuItem("Constrained-resizing window", NULL, &show_app_constrained_resize);
|
||||||
ImGui::MenuItem("Simple overlay", NULL, &show_app_simple_overlay);
|
ImGui::MenuItem("Simple overlay", NULL, &show_app_simple_overlay);
|
||||||
|
ImGui::MenuItem("Fullscreen window", NULL, &show_app_fullscreen);
|
||||||
ImGui::MenuItem("Manipulating window titles", NULL, &show_app_window_titles);
|
ImGui::MenuItem("Manipulating window titles", NULL, &show_app_window_titles);
|
||||||
ImGui::MenuItem("Custom rendering", NULL, &show_app_custom_rendering);
|
ImGui::MenuItem("Custom rendering", NULL, &show_app_custom_rendering);
|
||||||
ImGui::MenuItem("Documents", NULL, &show_app_documents);
|
ImGui::MenuItem("Documents", NULL, &show_app_documents);
|
||||||
@ -6971,7 +6976,7 @@ static void ShowExampleAppConstrainedResize(bool* p_open)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// [SECTION] Example App: Simple Overlay / ShowExampleAppSimpleOverlay()
|
// [SECTION] Example App: Simple overlay / ShowExampleAppSimpleOverlay()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
// Demonstrate creating a simple static window with no decoration
|
// Demonstrate creating a simple static window with no decoration
|
||||||
@ -7012,6 +7017,30 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|||||||
ImGui::End();
|
ImGui::End();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// [SECTION] Example App: Fullscreen window / ShowExampleAppFullscreen()
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Demonstrate creating a window covering the entire screen/viewport
|
||||||
|
static void ShowExampleAppFullscreen(bool* p_open)
|
||||||
|
{
|
||||||
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
static ImGuiWindowFlags flags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings;
|
||||||
|
ImGui::SetNextWindowPos(ImVec2(0, 0));
|
||||||
|
ImGui::SetNextWindowSize(io.DisplaySize);
|
||||||
|
if (ImGui::Begin("Example: Fullscreen window", p_open, flags))
|
||||||
|
{
|
||||||
|
ImGui::CheckboxFlags("ImGuiWindowFlags_NoBackground", &flags, ImGuiWindowFlags_NoBackground);
|
||||||
|
ImGui::CheckboxFlags("ImGuiWindowFlags_NoDecoration", &flags, ImGuiWindowFlags_NoDecoration);
|
||||||
|
ImGui::Indent();
|
||||||
|
ImGui::CheckboxFlags("ImGuiWindowFlags_NoTitleBar", &flags, ImGuiWindowFlags_NoTitleBar);
|
||||||
|
ImGui::CheckboxFlags("ImGuiWindowFlags_NoCollapse", &flags, ImGuiWindowFlags_NoCollapse);
|
||||||
|
ImGui::CheckboxFlags("ImGuiWindowFlags_NoScrollbar", &flags, ImGuiWindowFlags_NoScrollbar);
|
||||||
|
ImGui::Unindent();
|
||||||
|
}
|
||||||
|
ImGui::End();
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// [SECTION] Example App: Manipulating Window Titles / ShowExampleAppWindowTitles()
|
// [SECTION] Example App: Manipulating Window Titles / ShowExampleAppWindowTitles()
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user