のGLKView
サイズが変更されると、バッファとそのコンテキストで行われる舞台裏の操作がいくつかありますGLKView
。これらのバックグラウンド操作の実行にかかる時間の間、 への描画はGLKView
正しい結果を生成しません。
私のシナリオでは、有効になっGLKView
ている がsetNeedsDisplay
あるので、画面上のコンテンツを更新する必要があるときはいつでも、それを呼び出すだけ-setNeedsDisplay
です
GLKView
。を使用GLKView
して画像を描画しているため、別のサイズの画像を描画する必要がある場合は、 のサイズも変更する必要がありGLKView
ます。
問題: のサイズを変更してそのビューGLKView
を呼び出すとsetNeedsDisplay
、画面上の結果が正しくありません。これはGLKView
、新しいイメージを描画しようとする前に、新しいサイズ変更によって呼び出された舞台裏の操作が完了していないためです。
performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0
の代わりに: を呼び出すことで、これに対する回避策を見つけましsetNeedsDisplay
たGLKView
。これは基本的に、メイン スレッドがsetNeedsDisplay
. これは問題なく機能しますが、より良い解決策があるかどうか疑問に思っています。たとえば、続行する前にすべての openGL 操作が完了するまでスレッドを待機させる openGL 呼び出しはありますか?