Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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++ 窗口出现,但无法使用OpenGL绘制_C++_Opengl_Glfw_Glew - Fatal编程技术网

C++ 窗口出现,但无法使用OpenGL绘制

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

我正在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规格:

  • 英特尔酷睿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库?顺便说一句:您可以尝试在您的机器上编译一个在不同机器上运行的程序。如果它在那里工作,那并不意味着你的代码是好的,它可能只是意味着你正在做一些图形适配器不支持的事情,这让我回到缺少错误检查的问题上来。。。