当前位置: 首页 > 知识库问答 >
问题:

glfwWindowHint()调用后,GLFW窗口创建失败

常乐
2023-03-14

我正在尝试使用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;

共有1个答案

韩弘阔
2023-03-14

如果它将错误65543打印到控制台,则相当于glfw3中定义的0x00010007。h作为GLFW_版本不可用。

/*! @brief The requested OpenGL or OpenGL ES version is not available.
 *
 *  The requested OpenGL or OpenGL ES version (including any requested context
 *  or framebuffer hints) is not available on this machine.
 *
 *  @par Analysis
 *  The machine does not support your requirements.  If your application is
 *  sufficiently flexible, downgrade your requirements and try again.
 *  Otherwise, inform the user that their machine does not match your
 *  requirements.
 *
 *  @par
 *  Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0
 *  comes out before the 4.x series gets that far, also fail with this error and
 *  not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions
 *  will exist.
 */
#define GLFW_VERSION_UNAVAILABLE    0x00010007
 类似资料:
  • 我正在尝试使用GLFW创建一个窗口。窗口已创建,但经过几次尝试,创建窗口需要很长时间。 https://drive.google.com/file/d/1zq4IEjcSIJxy5wnXWLrGe46ptHMbKM5R/view?usp=sharing 我找不到任何解决办法,也不知道这是由什么引起的。 这是我正在使用的代码: 程序输出为 所以看起来初始化glfw需要很长时间,但我不知道如何修复它。

  • 提前谢了。

  • 我设置了一个最小应用程序,用GLFW3打开一个空白窗口: 它会导致以下错误: GLFW错误65540:上下文配置文件仅存在于OpenGL 3.2及更高版本 未能打开GLFW窗口... 该应用程序使用Bumblebee的optirun在Linux上运行。当使用freeglut而不是GLFW时,代码可以工作。导致错误的代码有什么问题?

  • 我真的开始使用LWJGL(我刚刚开始),我专注于一件事:当我创建一个窗口并且我想将其设置为不可调整大小时,我使用: 然而,即使我想在创建窗口后设置它,我也不知道如何设置。我只是尝试在创建窗口后放置命令,但它不起作用: 那么,我该如何解决这个问题呢?

  • 译注 注意,由于作者对教程做出了更新,之前本节使用的是GLEW库,但现在改为了使用GLAD库,关于GLEW配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到这里来查看。 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(

  • 我对glfw有一个小问题。 我的代码非常简单,我只想创建一个空窗口。 } 此代码编译,但当我运行它时,我只有一个白色窗口。窗口的标题是正确的,但里面的一切都是白色的......我尝试像那样使用glClearColor。 但是我的窗户仍然是白色的....我用的是visual studio 2015。 怎么弄个黑窗? 编辑: 忘了补充这个:glfwMakeContextCurrent(window);