首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用glfw、opengl时ImGui存在的问题

使用glfw、opengl时ImGui存在的问题
EN

Stack Overflow用户
提问于 2021-05-01 11:49:20
回答 2查看 1.4K关注 0票数 0

我试图把它添加到一个glfw窗口中,但是它给了我这个错误

这是删除错误的行

代码语言:javascript
复制
ImGui_ImplOpenGL3_Init(GL_renderer);

这是我的imgui文件夹

这是main.cpp (除了imgui文件夹之外没有其他文件)

代码语言:javascript
复制
#include "imgui/imgui.h"

#include <GL/glew.h>
#include <GLFW/glfw3.h>

#include "imgui/imgui_impl_glfw.h"
#include "imgui/imgui_impl_opengl3.h"
#include <stdio.h>

int main() {
    GLFWwindow* window;

    if (!glfwInit()) {
        return -1;
    }

    window = glfwCreateWindow(850, 500, "test window", NULL, NULL);




    // 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 backends
    ImGui_ImplGlfw_InitForOpenGL(window, true);

    char* GL_renderer = (char*)glGetString(GL_RENDERER);
    ImGui_ImplOpenGL3_Init(GL_renderer);




    if (!window) {
        return -1;
        glfwTerminate();
    }

    while (!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);

        ImGui_ImplOpenGL3_NewFrame();
        ImGui_ImplGlfw_NewFrame();
        ImGui::NewFrame();

        ImGui::Begin("hello world window");


        glfwPollEvents();
    }

    glfwTerminate();
}

请帮帮忙,我已经试着纠正这个错误6个小时了

EN

回答 2

Stack Overflow用户

发布于 2021-11-23 05:55:07

最后应该有一个ImGui::End(),就像在每个提供的示例中一样。

代码语言:javascript
复制
ImGui::Begin("hello world window");
...
ImGui::End();

编辑您也编译了实现文件吗?https://github.com/ocornut/imgui/blob/master/imgui_draw.cpp

票数 1
EN

Stack Overflow用户

发布于 2021-05-18 16:11:00

它给了我一个空指针错误,我认为是因为它是一个错误的变量类型或什么的。

无论如何,在glfw opengl 3的示例文件中,在主函数的开头使用这样的方法,其中窗口被初始化以获得opengl呈现版本,AKA是导致错误的函数的参数。

代码语言:javascript
复制
// Decide GL+GLSL versions
#if defined(IMGUI_IMPL_OPENGL_ES2)
    // GL ES 2.0 + GLSL 100
    const char* glsl_version = "#version 100";
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
#elif defined(__APPLE__)
    // GL 3.2 + GLSL 150
    const char* glsl_version = "#version 150";
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  // 3.2+ only
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);            // Required on Mac
#else
    // GL 3.0 + GLSL 130
    const char* glsl_version = "#version 130";
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
    //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  // 3.2+ only
    //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);            // 3.0+ only
#endif
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67345946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档