C++ 为什么这个通过GLFW的简单OpenGL程序在Intel HD P4600上不起作用?
我正在尝试运行一个最简单的OpenGL 3.3程序,但它无法成功运行。程序总是以负整数返回 以下是我如何面对这种情况的。我自己什么也没做,只是按照这个指南做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版;其他一切=无,
没有编译错误。没有链接错误。
未处理的异常
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”,你就会明白这个想法。