我正在尝试运行一种曾经可以运行但无法成功运行的最简单的OpenGL 3.3程序。程序始终以负整数返回。
这就是我遇到这种情况的方法。除了遵循本指南LearnOpenGL - Creating a window之外,我没有做任何其他事情。
没有编译错误。没有链接错误。
重要提示:当您第一次构建程序然后第一次运行它时,我可以看到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.dll
,a 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/