【发布时间】:2013-02-11 04:45:49
【问题描述】:
我们正在开发一款游戏,它在 OpenGL ES 视图上使用UIViews 显示 2d 元素(具体来说,我们正在使用 GLKit 的 GLKView)并且在保持位置完全同步时遇到问题。
在父视图的layoutSubviews 中,我们将世界中的 3d 位置投影到屏幕上,并将这些位置用作游戏中多个UIView“标记”的位置。整个游戏只更新响应用户移动相机,相机每次移动都会告诉视图setNeedsLayout。
一切正常,除了标记似乎与 3d 渲染不同步大约 1 帧。我说粗略是因为(1)这是一个估计! (2) 我想知道是否存在潜在的多线程问题:GLKView 不同步到特殊的屏幕刷新回调或其他什么?
有什么方法可以挂钩视图的 layoutSubviews 以便它同步到 3d 视图更新?
更新:奇怪的是,在setNeedsLayout 之后立即调用layoutIfNeeded 会使问题更糟!可能会输出 2 帧或更多帧。真的不明白!
【问题讨论】:
标签: ios layout opengl-es uiview