我无法让Pix调试着色器。我之前已经完全没用过了,但是今天我在尝试调试顶点或像素着色器时仍然收到这个错误:
之前成功的通话无法播放:
EID:8调用:IDirect3D9 :: CreateDevice()HRESULT:D3DERR_NOTAVAILABLE
有关详情,请点击“帮助”。
帮助提出这个:
"Playback failure is the error state that occurs following a successful timing capture.
There are many reasons why a call that succeeded at capture time can fail during PIX playback. Here are some common causes:
If the run file was captured on a system with different capabilities or more video memory. Also, PIX Win will use up more video memory than the original title did when it allowed debugging.
It can also occur if your Direct3D control panel settings are different from when the run file was captured. Some Direct3D 9 calls only fail when the debug runtime is active.
In the case of Direct3D 9 playback, the mesh viewer and shader debugging potentially use different device settings than the original application that can cause playback failures. For example, the shader debugging has to use a reference device. In this situation, there is a possibility that the HW device supports settings that are not supported under the reference device like StretchRect() filters. "
我真的不明白为什么它会工作一天而不是下一天,我将调查我的显卡驱动程序,但我对如何检查上述错误没有真正的理解。
我还应该添加我使用Pix和DirecX 9 XNA应用程序。我已经尝试过测试调试版本和发布版本。我已禁用D3D分析并使用帧捕获。
如果有人有任何想法可以请帮助!
干杯
答案 0 :(得分:0)
出于好奇,如果您使用软件而不是硬件来进行顶点处理,它是否有效?
即
Direct3D.CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,HWindow,D3DCREATE_SOFTWARE_VERTEXPROCESSING,D3DInit,Device);
如果自上次运行代码后没有其他任何更改,可能是您的驱动程序(或DirectX控制面板中的某些设置)已被修改。
答案 1 :(得分:0)
该错误表明硬件故障,为了解决这个问题,我认为您可能真的需要将系统恢复一些。
但是在调试着色器方面,它不一定是XNA限制,你可以创建一个存根D3D程序,甚至使用@crazylpfan建议的软件管道,然后你可以将你的PIX连接到该程序进行调试。