谢伟亮 feiyurainy@163.com
转载请注明出处
PerfHUD是NV一个非常好用的工具,可以用于查看游戏的运行效率,找出瓶颈,也可以用于分析游戏渲染流程,看每个DPC的渲染操作,包括渲染状态,所用的shader等,非常强大。
PerfHUD正常的用途是用于调试自己写的程序,但是有时候看到别的游戏一些好的效果,也想了解是怎么实现的,这时,PerfHUD也可以派上用场。
要使用PerfHUD,就要对自己的D3D程序进行修改,在CreateDevice时,Adapter这个参数不要选用D3DADAPTER_DEFAULT,而是枚举所有的Adapter,选中Description中带有“PerfHUD”字符串的那个Adapter,一般来说,对于单显卡的机器,通常都是第二个Adapter,我没有多显卡,所以不知道多显卡情况下是不是往后顺移。
同时,DeviceType不要选D3DDEVTYPE_HAL,而要选D3DDEVTYPE_REF。
通过这样来创建Device的程序,才能用PerfHUD来挂接并分析,更详细的创建过程,查看PerfHUD的帮助文档吧。
由上可以看出,对于别人的程序,Device都不是自己创建的,似乎不能用PerfHUD来分析了,但经过对要分析的程序做一些手脚后,也是可以的,以下拿《魔兽世界》来举例。
首先,打开VC(我用的2005,2003大同小异,VC6没试过),确保Options里的这个选项是选中的,
只有选中它了,才能用函数名称来作为断点断住DLL里的函数。
然后用VC来把要分析的游戏的exe执行起来,点击VC的File->Open ->Project