GLFW - 窗口打开需要2秒钟

时间:2017-07-25 17:56:49

标签: c++ opengl window glfw

我刚刚开始使用https://www.learnopengl.com/了解OpenGL API,并使用Hello Window教程中的代码打开一个新的GLFW窗口。但是,由于控制台在执行时立即打开但是窗口需要2秒才能打开,因此某些操作不太正确。使用Visual Studio调试器我发现glfwCreateWindow()似乎是罪魁祸首,但似乎没有关于为什么它对我来说很慢的信息。

代码如下:

#include <glad/glad.h>
#include <GLFW/glfw3.h>

#include <iostream>

void processInput(GLFWwindow* window);
void framebufferSizeCallback(GLFWwindow* window, int width, int height);

int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Test", nullptr, nullptr); //This line takes 2 seconds to execute
    if (window == nullptr)
    {
        std::cout << "Failed to instantiate GLFW window!" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);

    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialise GLAD" << std::endl;
        return -1;
    }

    while (!glfwWindowShouldClose(window))
    {
        processInput(window);

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();

    return 0;
}

void processInput(GLFWwindow* window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
    {
        glfwSetWindowShouldClose(window, true);
    }
}

void framebufferSizeCallback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

我正在使用Visual Studio 2017并且已经尝试在调试和发布模式下运行以及使用不同的GLFW库但可以使用。

1 个答案:

答案 0 :(得分:1)

没关系,事实证明我已经将NVIDIA控制面板中首选的图形处理器设置为我的GPU而不是自动选择导致程序使用我的GPU加载许多OpenGL扩展,因此需要更长时间才能打开窗户。更改设置后,通过使用集成图形,窗口将在500毫秒的更合理的时间内打开。