• GL_UI


    #include <imgui.h>
    #include <imgui_impl_glfw_gl3.h>
    #include <glad/glad.h>
    #include <GLFW/glfw3.h>
    #include <cstdio>
    
    void ShowFPS()
    {
        ImGui::SetNextWindowSize(ImVec2(300, 30), ImGuiCond_Appearing);
        ImGui::SetNextWindowPos(ImVec2(0, 0), ImGuiCond_Appearing);
        ImGui::Begin("", 0,
            ImGuiWindowFlags_NoTitleBar |
            ImGuiWindowFlags_NoResize |
            ImGuiWindowFlags_NoMove);
        ImGui::Text("%.2f ms since last frame (%.1f FPS)",
            ImGui::GetIO().DeltaTime * 1000,
            ImGui::GetIO().Framerate);
        ImGui::End();
    }
    
    void IMGUI_InitialUI(GLFWwindow* window)
    {
        ImGui_ImplGlfwGL3_Init(window, true);
    
        ImGuiIO& io = ImGui::GetIO();
        io.Fonts->AddFontFromFileTTF("../res/font/arialunicodems.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesChinese());
    }
    
    void IMGUI_SetUI()
    {
        ImGui_ImplGlfwGL3_NewFrame();
        ShowFPS();
        ImGui::Button("This is a button.");
    }
    
    void IMGUI_RenderUI()
    {
        ImGui::Render();
    }
    
    void IMGUI_CleanUpUI()
    {
        ImGui_ImplGlfwGL3_Shutdown();
    }
    
    void error_callback(int error, const char* description);
    void framebuffer_size_callback(GLFWwindow* window, int width, int height);
    
    unsigned int WindowWidth = 800;
    unsigned int WindowHeight = 600;
    
    float deltaTime = 0.0f;    
    float lastFrame = 0.0f;
    
    int main()
    {
        glfwSetErrorCallback(error_callback);
        
        if (!glfwInit())
            return 1;
    
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
        GLFWwindow* window = glfwCreateWindow(1280, 720, "UI", NULL, NULL);
    
        glfwMakeContextCurrent(window);
    
        glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
    
        if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
            return -1;
    
        IMGUI_InitialUI(window);
    
        while (!glfwWindowShouldClose(window))
        {
            float currentFrame = glfwGetTime();
            deltaTime = currentFrame - lastFrame;
            lastFrame = currentFrame;
    
            glfwPollEvents();
    
            IMGUI_SetUI();
    
            glClearColor(0.09f, 0.07f, 0.04f, 1.0f);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    
            IMGUI_RenderUI();
    
            glfwSwapBuffers(window);
        }
    
        IMGUI_CleanUpUI();
        glfwTerminate();
        return 0;
    }
    
    void error_callback(int error, const char* description)
    {
        fprintf(stderr, "Error %d: %s
    ", error, description);
    }
    
    void framebuffer_size_callback(GLFWwindow* window, int width, int height)
    {
        glViewport(0, 0, width, height);
        WindowWidth = width;
        WindowHeight = height;
    }
  • 相关阅读:
    ofbiz初级教程
    IBASE4J开发环境搭建
    Nginx在windows上安装 及 Nginx的配置及优化
    Windows里正确安装Zookeeper以服务运行
    分享一个完整的Mybatis分页解决方案
    jquery weui ajax滚动加载更多
    Spring+Mybatis+SpringMVC后台与前台分页展示实例
    Mysql怎么样避免全表扫描,sql查询优化
    SQL优化|Java面试题
    mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
  • 原文地址:https://www.cnblogs.com/Searchor/p/8051935.html
Copyright © 2020-2023  润新知