DirectX 10硬件上的FXC/Od问题

DirectX 10硬件上的FXC/Od问题,directx,shader,direct3d11,Directx,Shader,Direct3d11,我在FXC和DirectX 11上遇到了一个奇怪的问题。在兼容DirectX 10.0的集成图形卡上运行(无可否认是蹩脚的),如果我在构建时使用FXC编译它们,并使用标志/Od,我的着色器将无法工作。查看VS 2012中的图形调试器,我正确地看到了图形管道的输入汇编程序和顶点着色器阶段,但缺少像素着色器阶段,因此几何体从未绘制到帧缓冲区,如下所示: 使用/O0是可行的,但是我失去了有效调试着色器的能力(即使在/O0上进行优化,似乎也会扰乱指令,因此它们与.fx源文件不匹配) 在另一台机器上,使用

我在FXC和DirectX 11上遇到了一个奇怪的问题。在兼容DirectX 10.0的集成图形卡上运行(无可否认是蹩脚的),如果我在构建时使用FXC编译它们,并使用标志/Od,我的着色器将无法工作。查看VS 2012中的图形调试器,我正确地看到了图形管道的输入汇编程序和顶点着色器阶段,但缺少像素着色器阶段,因此几何体从未绘制到帧缓冲区,如下所示:

使用/O0是可行的,但是我失去了有效调试着色器的能力(即使在/O0上进行优化,似乎也会扰乱指令,因此它们与.fx源文件不匹配)


在另一台机器上,使用DirectX 11卡(GTX 560),/Od工作正常。

您是否尝试过更新图形驱动程序?如果相同的着色器字节码在GTX 560上工作(并且您确定两者都在功能级别10+上运行),则问题不太可能与FXC有关。如果您想确定,可以尝试使用WARP适配器运行程序(
D3D11CreateDevice(NULL,D3D_DRIVER_TYPE_WARP,
)。向我们显示顶点着色器代码。可能存在任何问题,但我怀疑深度/模具有问题。检查几何体是否通过“像素历史记录”中的深度和模具测试在shade debugger下运行VS以检查将传递给PS的位置值。此外,当您切换到debug shader时,是否还有其他更改?(可能您切换整个项目,因此CPU代码也会更改)