当我绘制任何形状(无论是否带有纹理)时,当我进入全屏模式时,它将闪烁,并在将鼠标移至顶部时显示标题栏。它将变轻,然后像瞬间一样返回。我不知道这种情况是否发生在纯色上,但是当我为顶点着色并绘制渐变或应用纹理时,就会发生这种情况。即使很微妙,也很烦人。我该如何解决?
[如何复制:在Metal中创建形状,或者对顶点进行不同的着色以创建渐变,或者在其上应用纹理,然后使窗口全屏显示。将光标移到窗口顶部。当标题栏显示时,形状/纹理将短暂闪烁。我该如何解决?
我正在使用macOS 1.15 Catalina。
即使使用Xcode的示例Metal游戏也可以证明这一点。只需进入全屏模式,显示标题栏,当您显示和取消显示标题栏时,它将不流畅。
更新:我已经意识到,如果我将绘图代码放在viewDidLoad()
中而不是draw()
中,则此行为将停止。我如何做到这一点,而不必只渲染一帧就不会出错?
这是一个非常困难的问题,因为我不知道该怎么做。此错误也很难修复,因为它有时仅会发生。
您最好的选择是将此错误报告给Apple。我试图进行研究,但似乎对该错误没有任何结果。
viewDidLoad
中的绘图代码只运行一次,似乎没有发生。也许您可以将其保留在那里,然后每秒手动调用MetalView的draw
方法60次。