From 241f0ddebc01d2f4cd5c1451fddc81dceefef5f4 Mon Sep 17 00:00:00 2001 From: kpitikaris Date: Sun, 15 Jan 2023 17:24:40 +0100 Subject: [PATCH] Added Win32_Opengl example --- .../example_glfw_opengl2.vcxproj | 10 +- .../example_glfw_opengl3.vcxproj | 12 +- .../example_glfw_vulkan.vcxproj | 10 +- .../example_sdl_directx11.vcxproj | 10 +- .../example_sdl_opengl2.vcxproj | 10 +- .../example_sdl_opengl3.vcxproj | 12 +- .../example_sdl_sdlrenderer.vcxproj | 10 +- .../example_sdl_vulkan.vcxproj | 10 +- .../example_win32_directx10.vcxproj | 10 +- .../example_win32_directx11.vcxproj | 8 +- .../example_win32_directx12.vcxproj | 10 +- .../example_win32_directx9.vcxproj | 10 +- examples/example_win32_opengl/build_win32.bat | 9 + .../example_win32_opengl.vcxproj | 171 ++++++++++++ .../example_win32_opengl.vcxproj.filters | 58 ++++ examples/example_win32_opengl/main.cpp | 250 ++++++++++++++++++ examples/imgui_examples.sln | 10 + 17 files changed, 559 insertions(+), 61 deletions(-) create mode 100644 examples/example_win32_opengl/build_win32.bat create mode 100644 examples/example_win32_opengl/example_win32_opengl.vcxproj create mode 100644 examples/example_win32_opengl/example_win32_opengl.vcxproj.filters create mode 100644 examples/example_win32_opengl/main.cpp diff --git a/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj b/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj index faf6d9a5ae8ef..2511e7b5ad1ac 100644 --- a/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj +++ b/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj @@ -21,34 +21,34 @@ {9CDA7840-B7A5-496D-A527-E95571496D18} example_glfw_opengl2 - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj b/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj index 7721c8ffacb1c..331a8880d5c48 100644 --- a/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj +++ b/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj @@ -21,34 +21,34 @@ {4a1fb5ea-22f5-42a8-ab92-1d2df5d47fb9} example_glfw_opengl3 - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 @@ -179,4 +179,4 @@ - + \ No newline at end of file diff --git a/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj b/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj index ed8fe9663e253..41742c247851d 100644 --- a/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj +++ b/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj @@ -21,34 +21,34 @@ {57E2DF5A-6FC8-45BB-99DD-91A18C646E80} example_glfw_vulkan - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_sdl_directx11/example_sdl_directx11.vcxproj b/examples/example_sdl_directx11/example_sdl_directx11.vcxproj index ac636d2f3398a..065939227df8d 100644 --- a/examples/example_sdl_directx11/example_sdl_directx11.vcxproj +++ b/examples/example_sdl_directx11/example_sdl_directx11.vcxproj @@ -21,7 +21,7 @@ {9E1987E3-1F19-45CA-B9C9-D31E791836D8} example_sdl_directx11 - 8.1 + 10.0 example_sdl_directx11 @@ -29,27 +29,27 @@ Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj index d22a67baed71d..47c2d8a7e99d3 100644 --- a/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj +++ b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj @@ -21,34 +21,34 @@ {2AE17FDE-F7F3-4CAC-ADAB-0710EDA4F741} example_sdl_opengl2 - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj index ace041df26b7d..5bddc91dbc1fe 100644 --- a/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj +++ b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj @@ -21,34 +21,34 @@ {BBAEB705-1669-40F3-8567-04CF6A991F4C} example_sdl_opengl3 - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 @@ -179,4 +179,4 @@ - + \ No newline at end of file diff --git a/examples/example_sdl_sdlrenderer/example_sdl_sdlrenderer.vcxproj b/examples/example_sdl_sdlrenderer/example_sdl_sdlrenderer.vcxproj index 911d9da2f7389..38a4af5049020 100644 --- a/examples/example_sdl_sdlrenderer/example_sdl_sdlrenderer.vcxproj +++ b/examples/example_sdl_sdlrenderer/example_sdl_sdlrenderer.vcxproj @@ -21,34 +21,34 @@ {0C0B2BEA-311F-473C-9652-87923EF639E3} example_sdl_sdlrenderer - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj index fc69ca70ba231..54b95627f992f 100644 --- a/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj +++ b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj @@ -21,34 +21,34 @@ {BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3} example_sdl_vulkan - 8.1 + 10.0 Application true MultiByte - v140 + v143 Application true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 Application false true MultiByte - v140 + v143 diff --git a/examples/example_win32_directx10/example_win32_directx10.vcxproj b/examples/example_win32_directx10/example_win32_directx10.vcxproj index e71cb0a79e842..70d6ac9ab7f1a 100644 --- a/examples/example_win32_directx10/example_win32_directx10.vcxproj +++ b/examples/example_win32_directx10/example_win32_directx10.vcxproj @@ -21,34 +21,34 @@ {345A953E-A004-4648-B442-DC5F9F11068C} example_win32_directx10 - 8.1 + 10.0 Application true Unicode - v140 + v143 Application true Unicode - v140 + v143 Application false true Unicode - v140 + v143 Application false true Unicode - v140 + v143 diff --git a/examples/example_win32_directx11/example_win32_directx11.vcxproj b/examples/example_win32_directx11/example_win32_directx11.vcxproj index 273d351cb74ff..a07531d1661fa 100644 --- a/examples/example_win32_directx11/example_win32_directx11.vcxproj +++ b/examples/example_win32_directx11/example_win32_directx11.vcxproj @@ -27,27 +27,27 @@ Application true Unicode - v140 + v143 Application true Unicode - v140 + v143 Application false true Unicode - v140 + v143 Application false true Unicode - v140 + v143 diff --git a/examples/example_win32_directx12/example_win32_directx12.vcxproj b/examples/example_win32_directx12/example_win32_directx12.vcxproj index e12fa4017896c..73cee0060f688 100644 --- a/examples/example_win32_directx12/example_win32_directx12.vcxproj +++ b/examples/example_win32_directx12/example_win32_directx12.vcxproj @@ -21,34 +21,34 @@ {b4cf9797-519d-4afe-a8f4-5141a6b521d3} example_win32_directx12 - 10.0.18362.0 + 10.0 Application true Unicode - v140 + v143 Application true Unicode - v140 + v143 Application false true Unicode - v140 + v143 Application false true Unicode - v140 + v143 diff --git a/examples/example_win32_directx9/example_win32_directx9.vcxproj b/examples/example_win32_directx9/example_win32_directx9.vcxproj index e01eca146204f..f75230f0b1b8f 100644 --- a/examples/example_win32_directx9/example_win32_directx9.vcxproj +++ b/examples/example_win32_directx9/example_win32_directx9.vcxproj @@ -21,34 +21,34 @@ {4165A294-21F2-44CA-9B38-E3F935ABADF5} example_win32_directx9 - 8.1 + 10.0 Application true Unicode - v140 + v143 Application true Unicode - v140 + v143 Application false true Unicode - v140 + v143 Application false true Unicode - v140 + v143 diff --git a/examples/example_win32_opengl/build_win32.bat b/examples/example_win32_opengl/build_win32.bat new file mode 100644 index 0000000000000..b1cf7d1cb84e0 --- /dev/null +++ b/examples/example_win32_opengl/build_win32.bat @@ -0,0 +1,9 @@ +@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. +@set OUT_DIR=Debug +@set OUT_EXE=example_win32_directx11 +@set INCLUDES=/I..\.. /I..\..\backends /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include" +@set SOURCES=main.cpp ..\..\backends\imgui_impl_dx11.cpp ..\..\backends\imgui_impl_win32.cpp ..\..\imgui*.cpp +@set LIBS=/LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d11.lib d3dcompiler.lib +mkdir %OUT_DIR% +cl /nologo /Zi /MD %INCLUDES% /D UNICODE /D _UNICODE %SOURCES% /Fe%OUT_DIR%/%OUT_EXE%.exe /Fo%OUT_DIR%/ /link %LIBS% + diff --git a/examples/example_win32_opengl/example_win32_opengl.vcxproj b/examples/example_win32_opengl/example_win32_opengl.vcxproj new file mode 100644 index 0000000000000..8f97ad2d082f7 --- /dev/null +++ b/examples/example_win32_opengl/example_win32_opengl.vcxproj @@ -0,0 +1,171 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {DED7550A-978B-4FFA-9085-CA89F0F380E2} + example_win32_directx11 + example_win32_opengl + + + + Application + true + Unicode + v143 + + + Application + true + Unicode + v143 + + + Application + false + true + Unicode + v143 + + + Application + false + true + Unicode + v143 + + + + + + + + + + + + + + + + + + + $(ProjectDir)$(Configuration)\ + $(ProjectDir)$(Configuration)\ + + + $(ProjectDir)$(Configuration)\ + $(ProjectDir)$(Configuration)\ + + + $(ProjectDir)$(Configuration)\ + $(ProjectDir)$(Configuration)\ + + + $(ProjectDir)$(Configuration)\ + $(ProjectDir)$(Configuration)\ + + + + Level4 + Disabled + ..\..;..\..\backends;%(AdditionalIncludeDirectories); + + + true + d3d11.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies) + $(DXSDK_DIR)/Lib/x86;%(AdditionalLibraryDirectories) + Console + + + + + Level4 + Disabled + ..\..;..\..\backends;%(AdditionalIncludeDirectories); + + + true + d3d11.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies) + $(DXSDK_DIR)/Lib/x64;%(AdditionalLibraryDirectories) + Console + + + + + Level4 + MaxSpeed + true + true + ..\..;..\..\backends;%(AdditionalIncludeDirectories); + false + + + true + true + true + d3d11.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies) + $(DXSDK_DIR)/Lib/x86;%(AdditionalLibraryDirectories) + Console + + + + + Level4 + MaxSpeed + true + true + ..\..;..\..\backends;%(AdditionalIncludeDirectories); + false + + + true + true + true + d3d11.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies) + $(DXSDK_DIR)/Lib/x64;%(AdditionalLibraryDirectories) + Console + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/example_win32_opengl/example_win32_opengl.vcxproj.filters b/examples/example_win32_opengl/example_win32_opengl.vcxproj.filters new file mode 100644 index 0000000000000..d659d72ad716b --- /dev/null +++ b/examples/example_win32_opengl/example_win32_opengl.vcxproj.filters @@ -0,0 +1,58 @@ + + + + + + imgui + + + sources + + + sources + + + imgui + + + imgui + + + imgui + + + imgui + + + + + imgui + + + imgui + + + sources + + + sources + + + imgui + + + + + + imgui + + + + + {4cf2c910-3360-41be-8714-55f8543d99c8} + + + {e9c84207-f42e-45ae-848b-687eb9342c87} + + + \ No newline at end of file diff --git a/examples/example_win32_opengl/main.cpp b/examples/example_win32_opengl/main.cpp new file mode 100644 index 0000000000000..4ba7cbfd5b019 --- /dev/null +++ b/examples/example_win32_opengl/main.cpp @@ -0,0 +1,250 @@ +// Dear ImGui: standalone example application for OpenGL on Win32 +// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp. +// Read online: https://github.com/ocornut/imgui/tree/master/docs + +#include "imgui.h" +#include "imgui_impl_opengl3.h" +#include "imgui_impl_win32.h" +#include +#include +#include + +#pragma comment(lib, "opengl32.lib") +#pragma comment(lib, "glu32.lib") + +// Data +static HDC g_HDC = NULL; +static HGLRC g_HGLRC = NULL; + + +// Forward declarations of helper functions +bool CreateGLContext(HWND hWnd); +void CleanupGLContext(HWND hWnd); +LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); + +// Main code +int main(int, char**) +{ + // Create application window + //ImGui_ImplWin32_EnableDpiAwareness(); + WNDCLASSEXW wc = { sizeof(wc), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"ImGui Example", NULL }; + ::RegisterClassExW(&wc); + HWND hwnd = ::CreateWindowW(wc.lpszClassName, L"Dear ImGui OpenGL_Win32 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL); + + // Initialize OpenGL + if (!CreateGLContext(hwnd)) + { + CleanupGLContext(hwnd); + ::UnregisterClassW(wc.lpszClassName, wc.hInstance); + return 1; + } + + // Show the window + ::ShowWindow(hwnd, SW_SHOWDEFAULT); + ::UpdateWindow(hwnd); + + // Setup Dear ImGui context + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGuiIO& io = ImGui::GetIO(); (void)io; + //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls + //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls + + // Setup Dear ImGui style + ImGui::StyleColorsDark(); + //ImGui::StyleColorsLight(); + + // Setup Platform/Renderer backends + ImGui_ImplWin32_Init(hwnd); + ImGui_ImplOpenGL3_Init(); + + // Load Fonts + // - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them. + // - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple. + // - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit). + // - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call. + // - Use '#define IMGUI_ENABLE_FREETYPE' in your imconfig file to use Freetype for higher quality font rendering. + // - Read 'docs/FONTS.md' for more instructions and details. + // - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ ! + //io.Fonts->AddFontDefault(); + //io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\segoeui.ttf", 18.0f); + //io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f); + //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f); + //io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f); + //ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese()); + //IM_ASSERT(font != NULL); + + // Our state + bool show_demo_window = true; + bool show_another_window = false; + ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); + + // Main loop + bool done = false; + while (!done) + { + // Poll and handle messages (inputs, window resize, etc.) + // See the WndProc() function below for our to dispatch events to the Win32 backend. + MSG msg; + while (::PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE)) + { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + if (msg.message == WM_QUIT) + done = true; + } + if (done) + break; + + // Start the Dear ImGui frame + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplWin32_NewFrame(); + ImGui::NewFrame(); + + // 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!). + if (show_demo_window) + ImGui::ShowDemoWindow(&show_demo_window); + + // 2. Show a simple window that we create ourselves. We use a Begin/End pair to create a named window. + { + static float f = 0.0f; + static int counter = 0; + + ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it. + + ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too) + ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state + ImGui::Checkbox("Another Window", &show_another_window); + + ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f + ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color + + if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated) + counter++; + ImGui::SameLine(); + ImGui::Text("counter = %d", counter); + + ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); + ImGui::End(); + } + + // 3. Show another simple window. + if (show_another_window) + { + ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked) + ImGui::Text("Hello from another window!"); + if (ImGui::Button("Close Me")) + show_another_window = false; + ImGui::End(); + } + + // Rendering + ImGui::Render(); + glClearColor(clear_color.x * clear_color.w, clear_color.y * clear_color.w, clear_color.z * clear_color.w, clear_color.w); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + + //Present + SwapBuffers(g_HDC); + } + + // Cleanup + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplWin32_Shutdown(); + ImGui::DestroyContext(); + + CleanupGLContext(hwnd); + ::DestroyWindow(hwnd); + ::UnregisterClassW(wc.lpszClassName, wc.hInstance); + + return 0; +} + +// Helper functions + +bool CreateGLContext(HWND hWnd) +{ + // Setup pixelformat descriptor + constexpr PIXELFORMATDESCRIPTOR pfd = + { + sizeof(PIXELFORMATDESCRIPTOR), + 1, + PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, + PFD_TYPE_RGBA, + 32, + 0, 0, 0, 0, 0, 0, + 0, + 0, + 0, + 0, 0, 0, 0, + 24, + 8, + 0, + PFD_MAIN_PLANE, + 0, + 0, 0, 0 + }; + + // Setup device context + g_HDC = GetDC(hWnd); + + int pixelFormat = 0; + pixelFormat = ChoosePixelFormat(g_HDC, &pfd); + + if (!pixelFormat) + return false; + + if (!SetPixelFormat(g_HDC, pixelFormat, &pfd)) + return false; + + g_HGLRC = wglCreateContext(g_HDC); + + if (!g_HGLRC) + return false; + + if (!wglMakeCurrent(g_HDC, g_HGLRC)) + return false; + + + return true; +} + +void CleanupGLContext(HWND hWnd) +{ + wglMakeCurrent(g_HDC, nullptr); + + wglDeleteContext(g_HGLRC); + + ReleaseDC(hWnd, g_HDC); +} + + +// Forward declare message handler from imgui_impl_win32.cpp +extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); + +// Win32 message handler +// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs. +// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application, or clear/overwrite your copy of the mouse data. +// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application, or clear/overwrite your copy of the keyboard data. +// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags. +LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam)) + return true; + + switch (msg) + { + case WM_SIZE: + + return 0; + case WM_SYSCOMMAND: + if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu + return 0; + break; + case WM_DESTROY: + ::PostQuitMessage(0); + return 0; + } + return ::DefWindowProc(hWnd, msg, wParam, lParam); +} diff --git a/examples/imgui_examples.sln b/examples/imgui_examples.sln index aec5af3ccb6fa..6da7faa6424b9 100644 --- a/examples/imgui_examples.sln +++ b/examples/imgui_examples.sln @@ -27,6 +27,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_sdl_sdlrenderer", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_sdl_vulkan", "example_sdl_vulkan\example_sdl_vulkan.vcxproj", "{BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_win32_opengl", "example_win32_opengl\example_win32_opengl.vcxproj", "{DED7550A-978B-4FFA-9085-CA89F0F380E2}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -131,6 +133,14 @@ Global {BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3}.Release|Win32.Build.0 = Release|Win32 {BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3}.Release|x64.ActiveCfg = Release|x64 {BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3}.Release|x64.Build.0 = Release|x64 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Debug|Win32.ActiveCfg = Debug|Win32 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Debug|Win32.Build.0 = Debug|Win32 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Debug|x64.ActiveCfg = Debug|x64 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Debug|x64.Build.0 = Debug|x64 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Release|Win32.ActiveCfg = Release|Win32 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Release|Win32.Build.0 = Release|Win32 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Release|x64.ActiveCfg = Release|x64 + {DED7550A-978B-4FFA-9085-CA89F0F380E2}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE