-1

我正在尝试将其添加到 glfw 窗口中,但它给了我这个错误

在此处输入图像描述

这是删除错误的行

ImGui_ImplOpenGL3_Init(GL_renderer);

这是我的 imgui 文件夹

在此处输入图像描述

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

#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 小时了

4

2 回答 2

0

它给了我一个空指针错误,我认为是因为它是错误的变量类型或其他东西。

无论如何,在 glfw opengl 3 的示例文件中,在初始化窗口以获取 opengl 渲染版本的主函数的开头使用了这样的方法,也就是导致错误的函数的参数

// 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
于 2021-05-18T16:11:00.017 回答
0

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

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

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

于 2021-11-23T05:55:07.070 回答