OpenGL应用程序在其他PC上崩溃

时间:2014-05-30 13:25:33

标签: opengl

我制作了一个OpenGL应用程序,用于测试Framebuffer对象,这些对象适用于我制作的笔记本电脑,我拥有的另一台笔记本电脑和我的台式电脑。但是,对于我要求为我测试应用程序的其他人来说,它似乎崩溃了。

到目前为止,我已经将其缩小到崩溃我调用的第一个扩展(在这种情况下,glGenBuffers),我100%确定在调用此函数(见下文)之前不会调用它。在查看了许多答案之后,我确定了以下内容:

  • 我已检查窗口是否已创建。
  • 在创建并设置上下文后,我调用了glewInit()。
  • glewExperimental设置为GL_TRUE。
  • 在此功能完成之前,不会调用gl扩展名。
  • 我已经检查过glGenBuffers不等于null。

它仍然以其他方式在其他PC上崩溃:

  1. 窗口已创建,白色背景 - 没有清晰的颜色。
  2. 弹出一个消息框,说" application.exe已停止响应"
  3. 关于我接下来可以尝试的任何想法?


    更新:要求我的朋友给我发错误信息,这是:

    OpenGL Framework.exe中0x7490CB49处的未处理异常:0xC0000005:访问冲突执行位置0x00000000。


        void CSystem::Initialise()
        {
            if(glfwInit() == GL_FALSE)
            {
                return GL_FALSE;
            }
    
            glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
            glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
            glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
            glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    
            if(m_bFullscreen)
                window = glfwCreateWindow(1600, 900, "OpenGL", glfwGetPrimaryMonitor(), nullptr); // Fullscreen
            else
                window = glfwCreateWindow(1600, 900, "OpenGL", nullptr, nullptr); // Windowed
    
            if(window == nullptr)
            {
                return false;
            }
    
            glfwMakeContextCurrent(window);
    
            glewExperimental = GL_TRUE;
            if(glewInit() != GLEW_OK)
            {
                return false;
            }
    
            if(glGetError())
            {
                return false;
            }
        }
    

1 个答案:

答案 0 :(得分:0)

所以我设法解决了这个问题,对于其他想要了解的人。事实证明,即使GLEW没有出现任何错误,它仍然没有正确加载所有扩展。

我通过完全删除GLEW并编写自己的扩展加载器解决了这个问题。

,耗费时间,可能不是其他有同样问题的人想要听到的 - 但这样做了。

至少对我来说,写一些东西是好的,以便将来我可以看到哪些扩展无法加载以及如何加载。在这种情况下,通过自己编写它们,它最终完美地工作。去图!