执行eglSwapBuffer和eglMakeCurrent时性能低下
我正在开发一个允许用户记录他/她的游戏玩法的Android Unity插件
我的解决方案概述:
我的问题是录制效果不好。 三星Galaxy S4的FPS从60降至40。 我试图记录渲染操作的执行时间,并认识到影响性能操作的最重要因素是使视频表面当前操作以及从视频表面到默认窗口操作的交换缓冲区。 以下是他们的代码
public void makeCurrent()
{
if (!EGL14.eglMakeCurrent(this.mEGLDisplay, this.mEGLSurface, this.mEGLSurface, this.mEGLContext))
throw new RuntimeException("eglMakeCurrent failed");
}
public boolean swapBuffers()
{
return EGL14.eglSwapBuffers(this.mEGLDisplay, this.mEGLSurface);
}
执行当前操作的时间为1〜18 ms
交换缓冲区的执行时间为4〜14 ms
其他操作的执行时间通常为0〜1 ms
如何提高这些操作的性能?
任何帮助将不胜感激!
许多OpenGL调用都是assync,有些调用可能会导致OpenGL等待排队的操作执行。 所以你看到的时间是因为你正在做的实际呼叫之前执行的其他呼叫。
链接地址: http://www.djcxy.com/p/64643.html上一篇: Low performance when execute eglSwapBuffer and eglMakeCurrent