0

以前のアプリケーションにアプリケーションを重ねた後、以前のアプリケーションに戻ると、いくつかのエラーが発生します。

  • 特定のコンポーネントが消えた
  • コンポーネントを表示する唯一の方法は、ウィンドウのサイズを変更することです
  • キャンバス全体を再描画するようです。

  1. 奇妙なことは、欠落しているコンポーネントと描画された画像がいくつかしかないことです
  2. いつもではありませんが、数回だけです
  3. 問題を再現する確実な方法が見つかりませんでした。

なぜこれが起こっているのか誰にも考えがありますか?

4

1 に答える 1

0

OSXゲームでOpenGL描画を使用したことを除いて、まったく同じ問題が発生しました(サイズ変更後にのみビューが正しく更新されました)。

これを追加することで私の問題は解決しました:

GLint vblSynch = 1;
[[self openGLContext] setValues:&vblSynch forParameter:NSOpenGLCPSwapInterval];

私のカスタム NSOpenGLView init メソッドで。それから私は実装しました:

- (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 に答える