在GLFW中在运行时切换窗口

时间:2015-12-20 08:29:13

标签: c++ opengl glfw

int
main()
{
  glfwInit();
  glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
  glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
  glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
  auto window = glfwCreateWindow(1080, 720, "OpenGL", nullptr, nullptr);   
  glfwMakeContextCurrent(window);
  gladLoadGL();

  while (glfwWindowShouldClose(window) == false) {
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
      glfwSetWindowShouldClose(window, true);

    if (glfwGetKey(window, GLFW_KEY_P) == GLFW_PRESS) {
      glfwDestroyWindow(window);
      glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
      glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
      glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
      glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
      glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
      window = glfwCreateWindow(1080, 720, "OpenGL", nullptr, nullptr);
      glfwMakeContextCurrent(window);
    }

    glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //draw

    glfwSwapBuffers(window);
    glfwPollEvents();
  }
  glfwTerminate();
  return EXIT_SUCCESS;
}

当我点击p时,我想将窗口更改为可调整大小的窗口,但我遇到的问题是,当glClear似乎仍在工作时,新窗口上没有任何内容。

我认为OpenGL上下文出了问题。我目前正在使用glad加载我的OpenGL上下文。

我是否必须在glfw中交换窗口?

0 个答案:

没有答案