Partage
  • Partager sur Facebook
  • Partager sur Twitter

SDL2, Glad et ImGui: problème d'affichage

    18 avril 2023 à 20:38:47

    Bonsoir a tous et toute.

    Je travail actuellement sur un moteur de jeu 2D/3D avec la SDL, OpenGL/Vulkan et ImGui. 
    Je rencontre actuellement des problèmes lorsque j'affiche une fenêtre ImGui.

    1- je suis obliger de configurer io.ConfigViewportsNoAutoMerge a true pour afficher une fenetre imgui
    2- quand ma fenêtre imgui est afficher elle n'ai pas au dessus de la fenetre SDL2

    comment résoudre ces problème merci.
    Je vous donne le code de ma classe qui initialise et afficher une fenetre imgui.
    namespace nkentseu
    {
        OpenGLImGui::OpenGLImGui(){
        }
    
        void OpenGLImGui::Init() {
            // 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
            io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;         // Enable Docking
            io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;       // Enable Multi-Viewport / Platform Windows
            //io.ConfigFlags |= ImGuiConfigFlags_ViewportsTopMost;      // Enable Top-Most Viewports
            //io.ConfigWindowsMoveFromTitleBarOnly = true;
            io.ConfigViewportsNoTaskBarIcon = true;
            io.ConfigViewportsNoAutoMerge = true;
    
            Application& app = Application::Get();
            io.DisplaySize = ImVec2((float)app.GetWindow().GetWidth(), (float)app.GetWindow().GetHeight());
    
            // Setup Dear ImGui style
            ImGui::StyleColorsDark();
            //ImGui::StyleColorsLight();
    
            // When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones.
            ImGuiStyle& style = ImGui::GetStyle();
            if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
                style.WindowRounding = 0.0f;
                style.Colors[ImGuiCol_WindowBg].w = 1.0f;
            }
            // Setup Platform/Renderer backends
            ImGui_ImplSDL2_InitForOpenGL(static_cast<SDL_Window*>(Application::Get().GetWindow().GetNativeWindow()), 
                                        static_cast<SDL_GLContext>(Application::Get().GetWindow().GetContext()));
            ImGui_ImplOpenGL3_Init("#version 450");
        }
    
        void OpenGLImGui::Clear() {
            // Cleanup
            ImGui_ImplOpenGL3_Shutdown();
            ImGui_ImplSDL2_Shutdown();
            ImGui::DestroyContext();
        }
    
        void OpenGLImGui::BeginRender() {
            // Start the Dear ImGui frame
            ImGui_ImplOpenGL3_NewFrame();
            ImGui_ImplSDL2_NewFrame(static_cast<SDL_Window*>(Application::Get().GetWindow().GetNativeWindow()));
            ImGui::NewFrame();
        }
    
        void OpenGLImGui::EndRender() {
            ImGui::Render();
            ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
            ImGuiIO& io = ImGui::GetIO();
            if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
                ImGui::UpdatePlatformWindows();
                ImGui::RenderPlatformWindowsDefault();
            }
        }
    
        OpenGLImGui::~OpenGLImGui(){
            Clear();
        }
    }

    • Partager sur Facebook
    • Partager sur Twitter
    Je suis moi c'est tout
      25 avril 2023 à 21:47:34

      Bonjour,

      quel est le langage utilisé, afin que je déplace le sujet ? Ici c'est le forum de modélisation 3D, pas de code :)

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        7 mai 2023 à 13:51:44

        Il ne manquerait pas un SDL_GL_SwapWindow(SDL_Window*); dans ton EndRender?
        • Partager sur Facebook
        • Partager sur Twitter

        SDL2, Glad et ImGui: problème d'affichage

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown