gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:03:54 33 4
gpt4 key购买 nike

我正在尝试运行一种曾经可以运行但无法成功运行的最简单的OpenGL 3.3程序。程序始终以负整数返回。

这就是我遇到这种情况的方法。除了遵循本指南LearnOpenGL - Creating a window之外,我没有做任何其他事情。

  • 我下载了GLFW的最新源文件。从Visual Studio 2019的CMAKE GUI应用程序生成了GLFW项目文件(尽管我正在使用免费的Community Edition)。编译了GLFW项目文件,并获得了 glfw3.lib 库文件。在此过程中没有任何错误。 CMAKE显示这是针对64位版本的。
  • 转到GLAD web service website。设置语言= C / C++,规范= OpenGL,API / GL =版本3.3;其他所有内容=无,个人资料=核心。然后网站给了我高兴的文件(.h和.c文件)。
  • 然后,我创建了一个新的C++空项目。在项目的属性的VC++目录中包括头文件的位置( glfw3.h glad.h )和GLFW库文件的位置( glfw3.lib )。在链接器->输入中,我添加了 glfw3.lib opengl32.lib
  • 根据建议在项目中添加了 glad.c 文件。编译了这个新的OpenGL项目。一切正常。
    没有编译错误。没有链接错误。

  • 重要提示:当您第一次构建程序然后第一次运行它时,我可以看到OpenGL窗口的打开,但是在一秒钟之内它会自动关闭。没有任何KB和/或Mouse交互,然后在控制台窗口中得到一个负整数作为返回值。如果我一次又一次地运行程序,除非重新构建然后再次运行它,否则不会看到新的UI窗口。

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

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

    以下是我的系统配置:

    CPU :Intel Xeon-E3 1246 v3(这是Intel的第4种Geneartion / Haswell架构),
    GPU :集成的Intel HD P4600 / P4700(基本上像所有第4代i5和i7一样,都是Intel HD 4600)
    已安装最新的图形驱动程序(设备管理器中的驱动程序日期: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%的支持。

    以下是我尝试运行的code:
    #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);
    }

    最佳答案

    RE:那个神秘的EZFRD64.dlla post on Reddit:

    According to google "EZFRD64.dll" mentioned there is a driver for some generic/off-brand "USB Vibration Controller" and appears to be known to cause issues at least on Windows 10.

    See 1 2 3 and many more posts just on the first page of results for that dll.



    在内核中/内核附近运行的垃圾代码可能会导致问题,请在11 :)处拍摄

    关于c++ - 为什么通过GLFW进行的这个简单的OpenGL程序在Intel HD P4600上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61216788/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com