我正在尝试使用hlsl为DirectX Windows应用商店应用编写DirectX着色器。
Visual Studio 2012有一个很好的工具来帮助设计着色器,但由于我是着色器的新手,我无法解释导出的hlsl源并可能改变它以微调着色器。
我想要的是能够重用一些为DirectX 9编写的着色器(主要用于XNA)。另外,net有非常有用的教程来教授DirectX 9的着色器。我正在比较DirectX 9和11的着色器,但是看不出我如何将现有的DirectX 9着色器转换为我可能在DirectX 11中使用的着色器。
我认为我缺少一些基本概念来深入了解这方面的细节。请让我知道两个平台中着色器之间的差异。
非常感谢对文档或优秀教程的引用。
我看到的最大区别是DirectX 11着色器有一个像下面这样的主要功能,尽管旧的着色器没有。
P2F main(V2P pixel)
相反,他们有类似下面的内容:
technique10 FireTechnique
{
pass pass0
{
SetBlendState(AlphaBlendingOn, float4(0.0f, 0.0f, 0.0f, 0.0f), 0xFFFFFFFF);
SetVertexShader(CompileShader(vs_4_0, FireVertexShader()));
SetPixelShader(CompileShader(ps_4_0, FirePixelShader()));
SetGeometryShader(NULL);
}
}
答案 0 :(得分:1)
尝试http://msdn.microsoft.com/en-us/library/windows/desktop/ff476190(v=vs.85).aspx
但是你真的应该首先处理DX9着色器(FXComposer?我不确定你是如何使用这些DX9着色器的) - 感觉有点像你想用一种语言来翻译如果不学习第一个,你就不会知道另一个人。