gpt4 book ai didi

ios - 将 UIView 布局同步到 OpenGL 帧

转载 作者:技术小花猫 更新时间:2023-10-29 11:08:50 26 4
gpt4 key购买 nike

我们正在开发一款游戏,该游戏在 OpenGL ES View (具体来说,我们正在使用 GLKit 的 GLKView)上使用 UIViews 显示二维元素,但在保持位置完全同步。

在父 View 的 layoutSubviews 中,我们将世界中的 3d 位置投影到屏幕上,并将它们用作游戏中多个 UIView“标记”的位置.整个游戏仅响应用户移动相机而更新,相机每次移动时都会告诉 View setNeedsLayout

一切正常,除了标记似乎与 3d 渲染不同步大约 1 帧。我说大致是因为(1)这是一个估计! (2) 我想知道是否存在潜在的多线程问题:GLKView 是否同步到特殊的屏幕刷新回调或其他东西?

是否有某种方法可以 Hook View 的布局 subview ,以便它同步到 3d View 更新?

更新:奇怪的是,在 setNeedsLayout 之后立即调用 layoutIfNeeded 会使问题变得更糟!可能出现 2 帧或更多帧。真的不明白!

最佳答案

是什么触发了您对 LayoutSubviews 的调用?

这完全取决于您的调用在 RunLoop 中的哪个位置被触发以及您的 GLK 更新调用被触发的位置。

一般来说,对于您正在做的事情,我的目标是将您的布局作为 GLK 更新的副作用 - 即不要等待 layoutSubviews 改变您的位置。

(如果您使用的是 OpenGL,那么整个“布局”系统对您来说用处不大:GLK 在其自己的可变帧率小世界中运行,您希望将其作为引用点)

关于ios - 将 UIView 布局同步到 OpenGL 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com