C# DirectX-像素着色器3.0不';行不通

C# DirectX-像素着色器3.0不';行不通,c#,directx,shader,C#,Directx,Shader,我已经在一个3D项目上工作了很长一段时间,用来显示引擎中的模型文件。我用C#编写了它,并使用了托管DirectX包装器(我知道它已经过时了,但我有自己的理由使用它)。我需要编写一个像素着色器来进行纹理混合和照明,但是PS2.0对于我的着色器来说太有限了,我需要使用PS3.0。它可以在软件渲染(DeviceType设置为Reference)上正常工作,在PS2.0硬件上也可以正常工作,但是当我使用硬件加速时,像素着色器就会停止工作。做一些研究,我发现我的GPU(英特尔GMA 950)只支持高达ps

我已经在一个3D项目上工作了很长一段时间,用来显示引擎中的模型文件。我用C#编写了它,并使用了托管DirectX包装器(我知道它已经过时了,但我有自己的理由使用它)。我需要编写一个像素着色器来进行纹理混合和照明,但是PS2.0对于我的着色器来说太有限了,我需要使用PS3.0。它可以在软件渲染(DeviceType设置为Reference)上正常工作,在PS2.0硬件上也可以正常工作,但是当我使用硬件加速时,像素着色器就会停止工作。做一些研究,我发现我的GPU(英特尔GMA 950)只支持高达ps 2.0,好吧,这一定是问题所在。问题是,我请一些朋友测试我的应用程序,他们都遇到了同样的问题(其中一个朋友甚至有一个Geforce GTX650,本应支持SM 5.0)。像素着色器不做任何事情,模型只保留顶点颜色


要使像素着色器在硬件中工作,有什么特别的需要吗?

我解决了这个问题,重新安装SDK并将Microsoft.Direct3DX.dll更改为1.0.2911.0(2006年4月)版本,现在它可以在支持ps 3.0的显卡上正常工作。谢谢大家。

试试PIX拍摄。还有,这是某种遗留测试吗?10多年前,GMA950卡问世时就糟透了!:)哈,没有。我的显卡停止工作了,我有旧的硬件——一个奔腾双核处理器。我将尝试PIX捕获。您是否从Direct3D调试层获得任何HRESULT错误或输出?--假设您使用的是与Windows 8或更高版本不支持Direct3D 9调试相同的旧操作系统。嗯,我使用DebugView从Direct3D获得了一些输出,我得到的唯一与着色器相关的消息是“[5332]D3DX:ID3DXEffect:警告!无法在此设备上创建着色器(可能是因为不支持着色器版本)”。问题在于,像素着色器即使在配备功能强大的视频卡(支持着色器Model 5.0+)的计算机上也无法工作。请记住,Managed DirectX 1.1已被弃用多年,而2006年4月是最新版本。看见你应该考虑搬到一些新的东西。