首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种在不破坏窗口/上下文的情况下切换全屏的方法?

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

Stack Overflow用户
提问于 2018-05-17 10:59:00
回答 1查看 1.7K关注 0票数 2

我现在有一个游戏与OGL4.5和GLFW 3。

我正在尝试创建一个函数,允许在全屏模式和窗口模式之间切换。但是,为了实现这一点,我必须销毁当前窗口,然后在同一个指针中创建一个新窗口(我在GLFW文档中将其红色)。

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

因此,我想知道是否有某种方式可以启用/禁用全屏,而不破坏窗口并创建新的窗口。

这是函数的代码:

代码语言:javascript
复制
void TMooseEngine::toggleFullscreen()
{
    _fullscreen = !_fullscreen;

    glfwDestroyWindow(window);
    delete _shader;
    delete _skybox;
    //delete _particulas;




    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    if(_fullscreen){ //change to fullscreen
       window = glfwCreateWindow(_width, _height, "Fate Warriors", glfwGetPrimaryMonitor(), NULL);
       glfwMakeContextCurrent(window);
       glViewport(0,0,_width,_height);
       //culling
       glEnable(GL_DEPTH_TEST);
       glViewport(0,0,_width,_height);
       glEnable(GL_CULL_FACE);
       glCullFace(GL_BACK); 
       glFrontFace(GL_CCW);
       _shader = new Shader();
       _skybox = new Skybox();

       initUI();
    }

    else{ //change to windowed
        window = glfwCreateWindow(_width, _height, "Fate Warriors", NULL, NULL);
        glfwMakeContextCurrent(window);
        glViewport(0,0,_width,_height);
        //culling
        glEnable(GL_DEPTH_TEST);
        glViewport(0,0,_width,_height);
        glEnable(GL_CULL_FACE);
        glCullFace(GL_BACK); 
        glFrontFace(GL_CCW);
        _shader = new Shader();
        _skybox = new Skybox();

        initUI();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 11:03:01

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

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

代码语言:javascript
复制
glfwSetWindowMonitor(window, _fullscreen ? glfwGetPrimaryMonitor() : NULL, 0, 0, _width, _height, GLFW_DONT_CARE);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50389790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档