如何通过代码获取framedebugger里面的drawcall信息

最近想做个性能工具,用来分析当前drawcall里面的具体调用。不知道unity有没有获取数据的具体接口,不过framedebugger里面的确有相关数据,这是方案一,另外一个方案是hook,理论上应该参考下renderdoc的实现应该就可以了。下面介绍下framedebugger的方法。

        一开始去GitHub - Unity-Technologies/UnityCsReference: Unity C# reference source code. 找对应unity版本的代码,找到framedebugger相关代码,看到有几个与framedebugger相碰的文件,其中有个clieckxxxenable的函数。看了下里面有FrameDebuggerUtility.GetFrameEvents 和FrameDebuggerUtility.GetFrameEventData 这两个函数,想必就是要用到的函数。

        调用这个两个函数前,应该是要暂停游戏

if (EditorApplication.isPlaying && !EditorApplication.isPaused)
    EditorApplication.isPaused = true;
ProfilerDriver.enabled = true;

GetFrameEvents 没什么问题直接通过反射调用就好了

var editorAssembly = Assembly.GetAss

你可能感兴趣的:(分析总结,unity,游戏引擎)