0

在我将应用程序覆盖在以前的应用程序上后,我返回到以前的应用程序并遇到一些错误:

  • 某些组件已消失
  • 使组件可见的唯一方法是调整窗口大小
  • 这似乎重新绘制了整个画布。

  1. 奇怪的是,只有几个组件和绘制的图像丢失了
  2. 它并不总是发生,但只有几次
  3. 我还没有找到重现问题的可靠方法。

有人知道为什么会这样吗?

4

1 回答 1

0

我遇到了完全相同的问题(视图仅在调整大小后才正确更新),除了我在 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]..
}

像这样。

在这些更改之后,当窗口获得焦点时,它会重新绘制自身(没有任何调整大小的东西:))。

希望这可以帮助!

于 2012-10-04T22:37:16.990 回答