我开发了一个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
如何提高这些操作的性能?
任何帮助将不胜感激!
答案 0 :(得分:0)
许多OpenGL调用都是assync,有些调用可能导致OpenGL等待排队操作执行。因此,您看到的时间是因为在您正在进行的实际通话之前执行的其他调用。