日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenGL:ImGUI在GLFW库和GLAD/GLEW库的环境下使用

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenGL:ImGUI在GLFW库和GLAD/GLEW库的环境下使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

步驟1:修改examples/imgui_impl_opengl3.h中的默認OpenGL3 loader

此處我使用的是GLAD庫,使用GLEW庫的話可以改成IMGUI_IMPL_OPENGL_LOADER_GLEW

// Set default OpenGL3 loader to be gl3w #if !defined(IMGUI_IMPL_OPENGL_LOADER_GL3W) \&& !defined(IMGUI_IMPL_OPENGL_LOADER_GLEW) \&& !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD) \&& !defined(IMGUI_IMPL_OPENGL_LOADER_CUSTOM) #define IMGUI_IMPL_OPENGL_LOADER_GLAD//IMGUI_IMPL_OPENGL_LOADER_GL3W //****修改這里**** #endif

步驟2:

將examples/中的imgui_impl_glfw.h、imgui_impl_glfw.cpp、imgui_impl_opengl3.h(修改后)、imgui_impl_opengl3.cpp添加到項目中
步驟3:調用順序

這里是examples/example_glfw_opengl3中的main.cpp中的內容的簡化版
?

// Setup Dear ImGui context IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); (void)io;// Setup Dear ImGui style ImGui::StyleColorsDark(); //ImGui::StyleColorsClassic();// Setup Platform/Renderer bindings ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init(glsl_version); //glsl_version可以使用字符串"#version 150"替代bool show_demo_window = true; bool show_another_window = false; ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);// Main loop while (!glfwWindowShouldClose(window)) {glfwPollEvents();// Start the Dear ImGui frameImGui_ImplOpenGL3_NewFrame();ImGui_ImplGlfw_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 created 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 stateImGui::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.0fImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a colorif (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();}// RenderingImGui::Render();int display_w, display_h;glfwMakeContextCurrent(window);glfwGetFramebufferSize(window, &display_w, &display_h);glViewport(0, 0, display_w, display_h);glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);glClear(GL_COLOR_BUFFER_BIT);ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());glfwMakeContextCurrent(window);glfwSwapBuffers(window); }// Cleanup ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplGlfw_Shutdown(); ImGui::DestroyContext();

?

總結

以上是生活随笔為你收集整理的OpenGL:ImGUI在GLFW库和GLAD/GLEW库的环境下使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。