【问题标题】:How to toggle OpenGL fullscreen rendering in Lion?如何在 Lion 中切换 OpenGL 全屏渲染?
【发布时间】:2012-02-27 03:24:27
【问题描述】:

当我的窗口全屏显示时,我必须如何为新的更高分辨率视图获取 OpenGL 渲染上下文(或更改现有的渲染上下文)?

现在在我的窗口委托中

- (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize {
    return [theOpenGLView bounds].size;
}

这是相当没有意义的,因为我只是在大量亚麻背景上得到相同大小的窗口。 我尝试返回 [[NSScreen mainScreen] frame].size 但这只是将我的 OpenGL 窗口放在角落,屏幕的其余部分被灰色的视图背景覆盖。我尝试更新我的glViewport 和投影矩阵并调用[myNSOpenGLContext update],但这也不起作用。

所有的苹果文档似乎都是针对旧的全屏系统的。如果有人能列举出正确执行此操作所需的步骤,我将不胜感激。

【问题讨论】:

    标签: objective-c macos opengl osx-lion fullscreen


    【解决方案1】:

    问题是我的视图没有自动调整大小,所以虽然窗口占据了整个屏幕,但视图是固定的。现在我必须弄清楚如何让过渡看起来不可怕……

    【讨论】:

    • 你试过在 NSOpenGLView 的 reshape 方法中更新视口吗?
    • 目前的过渡是什么样的可怕?另外,您是否考虑过使用旧式淡出/全屏转换?这使您不必以中间尺寸进行渲染,并且对多显示器设置更友好。
    • 我所说的可怕是指到处闪烁的 VRAM 垃圾。你是对的——我只是想出了如何做我想做的事。我覆盖 setFrame: 来更新我的 OpenGL 渲染器,但是过渡非常缓慢。我想我要做的是渲染当前窗口,然后在屏幕外渲染全屏大小(到纹理?或帧缓冲区?)并以某种方式在它们之间进行插值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 2023-03-30
    • 2018-06-11
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多