iphone - 当前渲染缓冲区 : GL_RENDERBUFFER_OES takes long time

标签 iphone opengl-es

我在游戏中添加了一个分析器并隔离了此功能。有时,它会导致 FPS 下降。这是我的结果:

Present buffer time: 22
Present buffer time: 1
Present buffer time: 9
Present buffer time: 1
Present buffer time: 20
Present buffer time: 6
Present buffer time: 4
Present buffer time: 4
Present buffer time: 22
Present buffer time: 4
Present buffer time: 8
Present buffer time: 4
Present buffer time: 4
Present buffer time: 15
Present buffer time: 1
Present buffer time: 1
Present buffer time: 1
Present buffer time: 11
Present buffer time: 1
Present buffer time: 6
Present buffer time: 1
Present buffer time: 1
Present buffer time: 25
Present buffer time: 6
Present buffer time: 7
Present buffer time: 1
Present buffer time: 10
Present buffer time: 7
Present buffer time: 3
Present buffer time: 1
Present buffer time: 12
Present buffer time: 9
Present buffer time: 6
Present buffer time: 9

你知道为什么每隔几帧这个函数就需要更多的时间吗?

这是我的代码:


    f64 time = -System::GetTime();      
    [m_context presentRenderbuffer:GL_RENDERBUFFER_OES];
    Log("Present buffer time: %d\n", u32((System::GetTime() + time) * 1000.));

最佳答案

如果您没有显式调用 glFlush(),驱动程序将在您呈现缓冲区时强制执行此操作,因为在 presentRenderbuffer 时调用渲染操作缓冲区上的操作可能尚未完成。

在显示缓冲区并单独测量其时间之前,尝试调用 glFlush

关于iphone - 当前渲染缓冲区 : GL_RENDERBUFFER_OES takes long time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134488/

相关文章:

ios - uitextview 文本在 ios 7 上显示,但在 ios 6 上不显示

iphone - Admob 可以与 iPhone OS 3.0 配合使用吗?

iPhone : Does AVAudioPlayer supports . wav 格式?

iPhone HTTP Streaming .m3u8 和 .ts 文件 - 如何使用 ffmpeg 创建

Android Opengl GLU.gluLookAt 不起作用

android - 如何在Libgdx中绘制平滑的圆

iphone - 当应用程序进入后台或手机被锁定时如何获取位置?

Android SurfaceView 与 GLSurfaceView 的壁纸风格背景

Android:将 OpenGL 效果应用于相机

android - 了解 Android 中的 android.graphics.Camera 对象