C++ 窗口出现,但无法使用OpenGL绘制
我正在udemy上学习一门基本的OpenGL课程,在开始学习时遇到了困难。我可以让窗口显示,但它只是黑色的,几秒钟后会崩溃,并说: “在OpenGLCourseApp.exe中的0x55334515(ig11icd32.dll)处引发异常:0xC0000005:访问冲突写入位置0x078C0000。”-我认为与符号有关 我看到有人有一个类似的问题之前,这是解决了更新图形卡驱动程序。我在Surface Pro 7上使用内置的Intel Iris Plus图形和最新的驱动程序(25.20.100.7101)。处理器声称支持OpenGL 4.5。我在故障排除期间尝试了32位和64位设置,没有任何区别。我不确定我的设置是否有问题,或者我是否需要使用一台具有更强大图形处理器的机器来完成课程 正在使用最新的GLEW和GLFW库 一些PC规格:C++ 窗口出现,但无法使用OpenGL绘制,c++,opengl,glfw,glew,C++,Opengl,Glfw,Glew,我正在udemy上学习一门基本的OpenGL课程,在开始学习时遇到了困难。我可以让窗口显示,但它只是黑色的,几秒钟后会崩溃,并说: “在OpenGLCourseApp.exe中的0x55334515(ig11icd32.dll)处引发异常:0xC0000005:访问冲突写入位置0x078C0000。”-我认为与符号有关 我看到有人有一个类似的问题之前,这是解决了更新图形卡驱动程序。我在Surface Pro 7上使用内置的Intel Iris Plus图形和最新的驱动程序(25.20.100.7
- 英特尔酷睿i5-1035G4
- 8GB内存
- Windows 10主页
- 英特尔Iris Plus图形
- Visual Studio 2019
#include <stdio.h>
#include <GL\glew.h>
#include <GLFW\glfw3.h>
const GLint WIDTH = 800, HEIGHT = 600;
int main()
{
if (!glfwInit())
{
printf("GLFW INITIALIZATION FAILED!");
glfwTerminate();
return 1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
GLFWwindow *mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", NULL, NULL);
if (!mainWindow)
{
printf("GLFW WINDOW CREATION FAILED!");
glfwTerminate();
return 1;
}
int bufferWidth, bufferHeight;
glfwGetFramebufferSize(mainWindow, &bufferWidth, &bufferHeight);
glfwMakeContextCurrent(mainWindow);
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK)
{
printf("GLEW INITIALIZATION FAILED!");
glfwDestroyWindow(mainWindow);
glfwTerminate();
return 1;
}
glViewport(0, 0, bufferWidth, bufferHeight);
while (!glfwWindowShouldClose(mainWindow))
{
glfwPollEvents();
glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(mainWindow);
}
return 0;
}
#包括
#包括
#包括
常数闪烁宽度=800,高度=600;
int main()
{
如果(!glfwInit())
{
printf(“GLFW初始化失败!”);
glfwTerminate();
返回1;
}
glfwWindowHint(GLFW_上下文_版本_专业,3);
glfwWindowHint(GLFW_上下文_版本_小调,3);
glfwWindowHint(GLFW_OPENGL_配置文件、GLFW_OPENGL_核心配置文件);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);
GLFWwindow*mainWindow=glfwCreateWindow(宽度、高度,“测试窗口”,NULL,NULL);
如果(!主窗口)
{
printf(“GLFW窗口创建失败!”);
glfwTerminate();
返回1;
}
int bufferWidth,bufferHeight;
glfwGetFramebufferSize(主窗口、缓冲区宽度和缓冲区高度);
glfwMakeContextCurrent(主窗口);
glewExperimental=GL_TRUE;
如果(glewInit()!=GLEW\u确定)
{
printf(“GLEW初始化失败!”);
GLFW窗口(主窗口);
glfwTerminate();
返回1;
}
glViewport(0,0,bufferWidth,bufferHeight);
而(!GLFWWindowsShouldClose(主窗口))
{
glfwPollEvents();
glClearColor(1.0f、0.0f、0.0f、1.0f);
glClear(GLU颜色缓冲位);
glfwSwapBuffers(主窗口);
}
返回0;
}
任何指导新手爱好者将不胜感激 我不明白为什么有人否决了这个问题。它包含一个(使用的编译器和选项缺失,但这是可以要求的)和一个问题描述。而且这样的错误很难追踪,所以我不明白downvoter还希望出现什么问题。在调试器中运行。使用“跨接”查找失败的线路。用你发现的更新问题。这缺少回溯。发生故障的位置之后的任何代码都不是故障的一部分。我还看到许多调用没有任何错误处理。顺便说一句:“无法绘制到它”是对segfault的错误描述。坚持观察而不是解释。也就是说,请阅读,只是为了避免一些陷阱(您的问题很好)。代码运行良好(Windows10,VisualStudio2019)。因此,这要么是一个与OpenGL驱动程序相关的问题,要么是一个库。您是否使用最新的and库?顺便说一句:您可以尝试在您的机器上编译一个在不同机器上运行的程序。如果它在那里工作,那并不意味着你的代码是好的,它可能只是意味着你正在做一些图形适配器不支持的事情,这让我回到缺少错误检查的问题上来。。。