zoukankan      html  css  js  c++  java
  • Base Env

    #include <imgui.h>
    #include <imgui_impl_glfw_gl3.h>
    #include <cstdio>
    #include <cmath>
    #include <glad/glad.h>
    #include <GLFW/glfw3.h>
    
    static 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);
    }
    
    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)
    {
        // Setup ImGui binding
        ImGui_ImplGlfwGL3_Init(window, true);
    
        // Load Fonts
        ImGuiIO& io = ImGui::GetIO();
        io.Fonts->AddFontFromFileTTF("../res/font/arialunicodems.ttf", 18.0f,NULL,io.Fonts->GetGlyphRangesChinese());
    }
    
    void IMGUI_SetUI()
    {
        ImGui_ImplGlfwGL3_NewFrame();
        ShowFPS();
    }
    
    void IMGUI_RenderUI()
    {
        ImGui::Render();
    }
    
    void IMGUI_CleanUpUI()
    {
        ImGui_ImplGlfwGL3_Shutdown();
    }
    
    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, "GL March", NULL, NULL);
    
        glfwMakeContextCurrent(window);
        glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
    
        //glfwSwapInterval(1); // Enable vsync
    
        if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
            return -1;
    
        IMGUI_InitialUI(window);
    
        double PreviousTime = 0.0;
        double CurrentTime = 0.0;
        double DeltaTime = 0.0;
    
        while (!glfwWindowShouldClose(window))
        {
            glfwPollEvents();
            IMGUI_SetUI();
            PreviousTime = CurrentTime;
            CurrentTime = glfwGetTime();
            DeltaTime = CurrentTime - PreviousTime;
            
            glClearColor(sin(CurrentTime),cos(tan(PreviousTime)), sin(tan(CurrentTime)), 1);
    
            glClear(GL_COLOR_BUFFER_BIT);
    
            IMGUI_RenderUI();
            glfwSwapBuffers(window);
        }
    
        IMGUI_CleanUpUI();
        glfwTerminate();
        return 0;
    }

  • 相关阅读:
    html5与css交互 API 《一》classList
    HTML5标签速查
    html5中常被忘记的标签,属性
    html5不熟悉的标签全称
    基于HTML5的网络拓扑图(1)
    HTML5 Canvas绘制效率如何?
    前端性能优化(Application Cache篇)
    Android独立于Activity或者Fragment的LoadingDialog的实现
    android常用设计模式的理解
    android使用android:ellipsize="end"无效的解决方法
  • 原文地址:https://www.cnblogs.com/Searchor/p/7766073.html
Copyright © 2011-2022 走看看