gpt4 book ai didi

iphone - OpenGL ES presentRenderBuffer 持续时间取决于 frameInterval 值

转载 作者:行者123 更新时间:2023-11-29 11:04:39 25 4
gpt4 key购买 nike

我正在使用 CADisplayLink 为 iOS 上的一个非常简单的 OpenGL ES 动画触发“更新”事件。动画有大约 10 个带纹理的四边形。我试图以 60 FPS 的速度运行它,但我看到了一些小故障。将其更改为 30 FPS 时,动画运行更流畅。对此进行分析后,我发现大部分时间都花在了 presentRenderBuffer 上。

结果如下:

m_displayLink.frameInterval = 2;

[379406923.204] Update time 0.000358
[379406923.206] Render time 0.001402
[379406923.207] Present time 0.001136
[379406923.238] Update time 0.000370
[379406923.239] Render time 0.001393
[379406923.241] Present time 0.001148
[379406923.271] Update time 0.000368
[379406923.273] Render time 0.001377
[379406923.274] Present time 0.001226
[379406923.305] Update time 0.000380
[379406923.307] Render time 0.001390
[379406923.308] Present time 0.001183
[379406923.338] Update time 0.000375
[379406923.339] Render time 0.001376
[379406923.341] Present time 0.001178
[379406923.372] Update time 0.000981
[379406923.375] Render time 0.001418
[379406923.379] Present time 0.004452

m_displayLink.frameInterval = 2 分析的结果来看,我可以看到总帧时间足以达到 60 FPS,但在更改 m_displayLink.frameInterval 时值为 1 结果出乎意料:

m_displayLink.frameInterval = 1;  

[379407317.151] Update time 0.000204
[379407317.152] Render time 0.000827
[379407317.172] Present time 0.019173
[379407317.172] Update time 0.000231
[379407317.173] Render time 0.000856
[379407317.201] Present time 0.027540
[379407317.202] Update time 0.000204
[379407317.202] Render time 0.000834
[379407317.218] Present time 0.015187
[379407317.218] Update time 0.000192
[379407317.219] Render time 0.000803
[379407317.251] Present time 0.031392
[379407317.252] Update time 0.000215
[379407317.253] Render time 0.000858
[379407317.267] Present time 0.014433
[379407317.268] Update time 0.000196
[379407317.269] Render time 0.001248
[379407317.301] Present time 0.031312

正如您所看到的,使用时它的当前时间会大几倍

m_displayLink.frameInterval = 1;

请注意 Render() 的最后一个命令是 glFinish()

您知道为什么会出现这种意外行为吗?是否有可能达到 60 FPS(从第一次分析我有大约 500FPS!)?

最佳答案

我通过从 view initWithFrame 移动 OpenGL 初始化解决了这个问题(纯属幸运!)。我知道这听起来很尴尬,但这将我的 GPU 使用率从 96% 降低到 6%。现在,这个简单的应用程序以 60 FPS 的速度非常流畅地运行,CPU 使用率为 2%,GPU 使用率为 6%(这是应该的!)。

关于iphone - OpenGL ES presentRenderBuffer 持续时间取决于 frameInterval 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230702/

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