Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这个通过GLFW的简单OpenGL程序在Intel HD P4600上不起作用?_C++_Opengl_Visual Studio 2019 - Fatal编程技术网

C++ 为什么这个通过GLFW的简单OpenGL程序在Intel HD P4600上不起作用?

C++ 为什么这个通过GLFW的简单OpenGL程序在Intel HD P4600上不起作用?,c++,opengl,visual-studio-2019,C++,Opengl,Visual Studio 2019,我正在尝试运行一个最简单的OpenGL 3.3程序,但它无法成功运行。程序总是以负整数返回 以下是我如何面对这种情况的。我自己什么也没做,只是按照这个指南做 我下载了GLFW的最新源文件。从VisualStudio2019的CMAKE GUI应用程序生成GLFW项目文件(不过我使用的是免费社区版)。编译GLFW项目文件并获得glfw3.lib库文件。在这个过程中没有任何错误。CMAKE显示这是用于64位构建的 去了。设置语言=C/C++,规范=OpenGL,API/GL=3.3版;其他一切=无,

我正在尝试运行一个最简单的OpenGL 3.3程序,但它无法成功运行。程序总是以负整数返回

以下是我如何面对这种情况的。我自己什么也没做,只是按照这个指南做

  • 我下载了GLFW的最新源文件。从VisualStudio2019的CMAKE GUI应用程序生成GLFW项目文件(不过我使用的是免费社区版)。编译GLFW项目文件并获得glfw3.lib库文件。在这个过程中没有任何错误。CMAKE显示这是用于64位构建的
  • 去了。设置语言=C/C++,规范=OpenGL,API/GL=3.3版;其他一切=无,配置文件=核心。然后网站给了我这些文件(.h和.c文件)
  • 然后我创建了一个新的C++空项目。在项目属性的VC++目录中包括头文件(glfw3.hglad.h)的位置和GLFW库文件(glfw3.lib)的位置。在linker->Input中,我添加了glfw3.libopengl32.lib
  • 按照建议在项目中添加了glad.c文件。编译了这个新的OpenGL项目。一切都很完美。
    没有编译错误。没有链接错误。
  • 重要提示:当您首先构建程序,然后第一次运行它时,我可以看到OpenGL窗口正在打开,但在一秒钟内它会自动关闭;没有任何KB和/或鼠标交互,然后在控制台窗口中返回一个负整数。如果我一次又一次地运行程序,我不会再看到新的UI窗口,除非我重新构建它,然后再次运行它

    使用调试时,它会调用以下异常:
    未处理的异常
    opengl1.exe中0x0000000010002203(EZFRD64.dll)处未处理的异常:0xC0000005:访问冲突读取位置0x00000000731A0090。

    我做错了什么?我哪里出错了

    以下是我的系统配置:

    CPU:英特尔至强E3 1246 v3(这是英特尔第四代Geneartion/Haswell体系结构),
    GPU:集成Intel HD P4600/P4700(基本上是Intel HD 4600,就像所有第四代i5s和i7s一样)
    已安装最新的图形驱动程序(设备管理器下的驱动程序日期:2020年1月21日)

    “OpenGL扩展查看器”显示了以下核心功能支持:
    OpenGL 3.0:100%支持。
    OpenGL 3.1:100%支持。
    OpenGL 3.2:100%支持。
    OpenGL 3.3:100%支持。
    OpenGL 4.0:100%支持。
    OpenGL 4.1:100%支持。
    OpenGL 4.2:100%支持。
    OpenGL 4.3:100%支持。
    OpenGL 4.4:80%支持。
    OpenGL 4.5:18%的支持率。
    OpenGL 4.6:9%的支持率。
    OpenGL ARB 2015:8%的支持率

    以下是我正在尝试运行的命令:

    #include <glad/glad.h>
    #include <GLFW/glfw3.h>
    #include <iostream>
    
    void framebuffer_size_callback(GLFWwindow* window, int width, int height);
    void processInput(GLFWwindow* window);
    
    const unsigned int SCR_WIDTH = 800;
    const unsigned int SCR_HEIGHT = 600;
    
    int main()
    {
        glfwInit();
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
        glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    
        GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
        if (window == NULL)
        {
            std::cout << "Failed to create GLFW window" << std::endl;
            glfwTerminate();
            return -1;
        }
        glfwMakeContextCurrent(window);
        glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
    
        if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
        {
            std::cout << "Failed to initialize GLAD" << std::endl;
            return -1;
        }
    
        while (!glfwWindowShouldClose(window))
        {
            glfwSwapBuffers(window);
            processInput(window);
    
            glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
            glClear(GL_COLOR_BUFFER_BIT);
    
    
            glfwPollEvents();
        }
        glfwTerminate();
        return 0;
    }
    
    void processInput(GLFWwindow* window)
    {
        if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
            glfwSetWindowShouldClose(window, true);
    }
    
    void framebuffer_size_callback(GLFWwindow* window, int width, int height)
    {
        glViewport(0, 0, width, height);
    }
    
    #包括
    #包括
    #包括
    无效帧缓冲区\大小\回调(GLFWwindow*窗口,整数宽度,整数高度);
    无效处理输入(GLFWwindow*窗口);
    常量无符号整数SCR_WIDTH=800;
    常数无符号整数SCR_高度=600;
    int main()
    {
    glfwInit();
    glfwWindowHint(GLFW_上下文_版本_专业,3);
    glfwWindowHint(GLFW_上下文_版本_小调,2);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
    glfwWindowHint(GLFW_OPENGL_配置文件、GLFW_OPENGL_核心配置文件);
    glfwWindowHint(GLFW_可调整大小,GL_为FALSE);
    GLFWwindow*window=glfwCreateWindow(SCR_宽度,SCR_高度,“LearnOpenGL”,NULL,NULL);
    如果(窗口==NULL)
    {
    
    std::coutRE:那个神秘的
    EZFRD64.dll
    ,:

    根据谷歌“EZFRD64.dll”提到的,有一个通用/非品牌“USB振动控制器”的驱动程序,并且至少在Windows 10上会引起问题

    请参阅该dll结果的第一页上的更多文章


    内核中/附近运行的Janky代码可能会导致问题,拍摄时间为11:)

    @genpfault我想知道这怎么会干扰我当前的openGL程序?我的意思是,我的源文件中甚至没有包含任何特定于gamepad的代码。没关系!完整的堆栈跟踪是什么?Windows Update是拉入该驱动程序还是手动安装的?@genpfau中尉,先生/女士,我现在是windows调试器中的noob。实际上我没有理解完整的stcak跟踪含义。如果这有帮助,那么这就是我在调用堆栈下找到的:Line1:EZFRD64.dll,Line2:winmm.dll,line3:kernel32.dll,lastline(line4):ntdll。dll@genpfault,先生/女士,这是我手动安装的。几年前,我通过一张迷你CD获得了这个驱动程序。它似乎是一个廉价的中国品牌,在印度组装。如果你用谷歌搜索“QHMPL gamepad”,你就会明白这个想法。