gpt4 book ai didi

ios - 当绘制到OpenGL上下文中时,为什么SCNRenderer如此不同步/不协调?

转载 作者:行者123 更新时间:2023-12-01 19:52:49 25 4
gpt4 key购买 nike

我有一个SceneKit SCNRenderer,用于将一些对象绘制到现有OpenGL应用程序中。
renderer = SCNRenderer( context: EAGLContext.current(), options: nil )
在更新其摄影机转换后,我从glkView方法为每个帧调用它:

override func glkView(_ view: GLKView, drawIn rect: CGRect) {
// render my OpenGL stuff
...
// Render the SceneKit
cameraNode.transform = SCNMatrix4Invert(SCNMatrix4FromGLKMatrix4(matrices.mvMatrix))
cameraNode.camera!.projectionTransform = SCNMatrix4FromGLKMatrix4(matrices.cameraMatrix)
SCNTransaction.flush() // <= This solved the problem!
renderer.render(atTime: 0)

我的OpenGL应用程序本身以60fps的速度渲染,如果我仅按上述方式渲染SceneKit,它也可以流畅地渲染。但是当我将它们组合在一起时,将会发生的情况是SceneKit似乎落后于渲染速度(可能为1 fps)。在下面的屏幕截图(缩小为gif)中,该平面由OpenGL绘制,并且可以完美地跟踪我的手指,但是SceneKit绘制的框滞后。如果我注释掉平面绘图代码,则该框可完美跟踪。

恐怕答案将是将其反转并在SceneKit运行循环中进行OpenGL绘制。希望还有其他途径。

enter image description here

更新:我不能发布动画的gif,但这是 link

更新2:按照Toyos的建议添加场景flush()调用解决了该问题。

最佳答案

我不确定要在哪个线程中渲染,但以防万一您应该在使用[SCNTransaction flush]渲染之前刷新场景图修改。

关于ios - 当绘制到OpenGL上下文中时,为什么SCNRenderer如此不同步/不协调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836314/

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