【发布时间】:2014-09-18 03:46:08
【问题描述】:
我正在尝试使用 GLFW3 创建一个窗口。当我在我的桌面上执行此操作时,它工作正常。在我的笔记本电脑上,它无法创建一个窗口,并且程序崩溃了。删除 glfwWindowHint() 调用可以防止崩溃,但我的代码不起作用,因为我得到了错误版本的 openGL。这是窗口代码:
Window::Window(int width, int height, std::string title, bool full)
{
glfwInit();
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
m_width = width;
m_height = height;
if (full)
{
m_window = glfwCreateWindow(width, height, title.c_str(), glfwGetPrimaryMonitor(), nullptr);
}
else
{
m_window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr);
}
glfwMakeContextCurrent(m_window);
glewExperimental = GL_TRUE;
glewInit();
glEnable(GL_DEPTH_TEST);
glViewport(0, 0, width, height);
}
这可能与我的台式机具有 NVidia 显卡而我的笔记本电脑具有集成显卡这一事实有关吗?
更新: 它在调用 glfwSwapBuffers() 时崩溃,并且我在控制台上打印了 glfw 错误 65543。 glfwCreateWindow() 正在返回 NULL;
【问题讨论】:
-
您的程序是如何崩溃的?它是否在
glfw电话之一中,如果是,是哪一个?你能从崩溃中得到一个堆栈转储吗? -
您的笔记本电脑是否支持 OpenGL 4.1 或更高版本?您不使用the GLFW debug callback的任何原因?
-
如果您在板载卡上运行,它可能不支持 GL4.1
-
因为窗口为空而崩溃。此外,它也不适用于 OpenGL 3.3。这个版本使用 4.1,因为它在我的桌面上运行。