我刚刚开始使用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库但可以使用。
答案 0 :(得分:1)
没关系,事实证明我已经将NVIDIA控制面板中首选的图形处理器设置为我的GPU而不是自动选择导致程序使用我的GPU加载许多OpenGL扩展,因此需要更长时间才能打开窗户。更改设置后,通过使用集成图形,窗口将在500毫秒的更合理的时间内打开。