虽然gms的debuger功能相比gm8来说已经很强了,但有的时候图像上的问题还是十分难以解决,或者有的时候我们写了一个shader,需要查看顶点来帮助调试,而gms没有更多关于shader的功能,那么使用PIX可以大幅提高你的工作效率
首先我们先打开一个工程,这里用的是yoyo官方提供的angry_cats的demo
然后将其导出,导出时选择以zip方式导出
然后将其解压,得到下面的文件
打开开始菜单,在directx sdk目录下找到pix for windows
(如果没有的请在这里下载http://www.microsoft.com/en-gb/download/details.aspx?id=6812)
打开后我们会看到这样一个界面
在program项中选择刚刚解压出来的游戏
然后点More Options按钮,窗口会变成这样
单击工具栏的“T”按钮,添加两个新的触发器,并更改Trigger Type
如图设置,将新添加的两个触发器更改为按键触发,并设置按键为f5和f6(或者是其他你喜欢的)
然后将两个触发器下的Action Type照图中设置
保存项目,点击工具栏上的绿色箭头运行游戏,如果成功的话你的游戏左上角应该会显示这个
按一下f5键(刚刚设置的触发器)开始捕捉画面
等到你想停止捕捉的时候按下f6,会自动关闭游戏并弹出如下窗口
把下面的两个窗口调整一下
展开你刚刚捕捉到的Frame xxx
点击render,过一段时间后,你会得到如下画面,确定你能正确看到画面
如果说你在列表里找到了SetTexture()函数的调用,用鼠标左键双击十六进制参数,便可以查看纹理的使用了。
除了纹理之外,在这个列表里有整个d3d渲染序列,您可以查看纹理、着色器,网格,顶点缓冲以及其他很多的东西,PIX是一个强大的调试工具,尤其是对于shader,你可以看到所有的数据交换,不仅如此,你还可以得到表面,纹理的创建顺序,以及他们是如何交换的,最后,你在这里得到的结果,到了其他平台也是一样的,灵活使用PIX可以让你的工作更有效率
此外,PIX可以直接在反汇编模式下调试,如果是vs,在编译时指定D3DXSHADER_DEBUG(/Zi)和D3DXSHADER_SKIPOPTIMIZATION(/Od)可以直接查看代码