Jos*_*rey 10 layout opengl-es uiview ios
我们正在开发一种游戏,其中有2d元素UIViews通过OpenGL ES视图显示(具体来说,我们使用的是GLKit GLKView)并且在保持位置完全同步方面存在问题.
在父视图中layoutSubviews,我们将世界中的3D位置投影到屏幕上,并将其用作UIView游戏中几个"标记"的位置.整个游戏仅响应用户移动相机而更新,并且相机setNeedsLayout每次移动时都会通知视图.
Everthing的工作正常,除了标记似乎与3d渲染大约1帧不同步.我粗略地说,因为(1)这是一个估计!(2)我想知道是否存在多线程问题:不GLKView同步到特殊的屏幕刷新回调或其他什么?
有没有办法挂钩视图的layoutSubviews,以便它同步到3D视图更新?
更新:很奇怪,layoutIfNeeded之后立即拨打电话setNeedsLayout会让问题变得更糟!可能是2帧或更多帧.真的不明白!
是什么触发了您对 LayoutSubviews 的调用?
这完全取决于您的调用在 RunLoop 中的哪个位置被触发以及您的 GLK 更新调用在哪个位置被触发。
一般来说,对于你正在做的事情,我的目标是将你的布局作为 GLK 更新的副作用 - 即不要等待layoutSubviews 改变你的位置。
(如果您使用 OpenGL,那么整个“布局”系统对您来说没有多大用处:GLK 运行在它自己的可变帧速率的小世界中,您希望将其作为您的参考点)
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |