有没有办法在不破坏窗口/上下文的情况下切换全屏?

时间:2018-05-17 10:59:01

标签: c++ opengl fullscreen glfw windowed

我目前正在使用OGL 4.5和GLFW 3进行游戏。

我试图创建一个允许在全屏模式和窗口模式之间切换的功能。但是,似乎为了实现这一点,我必须销毁当前窗口,然后在同一个指针中创建一个新窗口(我在GLFW文档中将其更新)。

虽然这样可行并且我可以在两种模式之间切换,但是一旦交换发生,它会导致引擎的一些关键部分停止绘制。

由于这个原因,我想知道是否有某种方法可以在不破坏窗口和创建新窗口的情况下启用/禁用全屏。

这是函数的代码:

<?php
require "init2.php";
$model = $_POST["model"];
$total = $_POST["total"];
$dangerous = $_POST["dangerous"];
$unrecognised = $_POST["unrecognised"];
$query = "insert into AndroidDatabase.ReportTable (MODEL,Total_Packages,Dangerous_Packages,Unrecognised) VALUES (?,?,?,?)";
$stmt = $con->prepare($query);
$stmt->bind_param("siii", $model,$total,$dangerous,$unrecognised);
$stmt->execute();
$stmt->close();
$con->close();
?>

1 个答案:

答案 0 :(得分:2)

根据GLFW的文档,您可以使用函数glfwSetWindowMonitor()来切换现有窗口的全屏模式,而不必销毁和重新创建它。

以下命令将根据_fullscreen变量更改全屏状态:

glfwSetWindowMonitor(window, _fullscreen ? glfwGetPrimaryMonitor() : NULL, 0, 0, _width, _height, GLFW_DONT_CARE);