在我将应用程序覆盖在以前的应用程序上后,我返回到以前的应用程序并遇到一些错误:
- 某些组件已消失
- 使组件可见的唯一方法是调整窗口大小
- 这似乎重新绘制了整个画布。
- 奇怪的是,只有几个组件和绘制的图像丢失了
- 它并不总是发生,但只有几次
- 我还没有找到重现问题的可靠方法。
有人知道为什么会这样吗?
在我将应用程序覆盖在以前的应用程序上后,我返回到以前的应用程序并遇到一些错误:
有人知道为什么会这样吗?
我遇到了完全相同的问题(视图仅在调整大小后才正确更新),除了我在 OSX 游戏中使用了 OpenGL 绘图。
通过添加以下内容解决了我的问题:
GLint vblSynch = 1;
[[self openGLContext] setValues:&vblSynch forParameter:NSOpenGLCPSwapInterval];
在我的自定义 NSOpenGLView 初始化方法中。然后我实现了:
- (void)drawRect:(NSRect)rect
{
[self destroyFramebuffer]; // glDeleteFramebuffers..
[self createFramebuffer]; // [super prepareOpenGl], glGenFrame(Render)Buffers, bind buffers, etc
[self drawView]; // [[self openGLContext] makeCurrentContext], make some drawing, [[self openGLContext] flushBuffer]..
}
像这样。
在这些更改之后,当窗口获得焦点时,它会重新绘制自身(没有任何调整大小的东西:))。
希望这可以帮助!