为Directx 11.1转换Directx 9着色器(Windows应用商店应用)

时间:2012-12-06 14:57:52

标签: directx windows-store-apps hlsl directx-11 directx-9

我正在尝试使用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);
    }
}

1 个答案:

答案 0 :(得分:1)

尝试http://msdn.microsoft.com/en-us/library/windows/desktop/ff476190(v=vs.85).aspx

但是你真的应该首先处理DX9着色器(FXComposer?我不确定你是如何使用这些DX9着色器的) - 感觉有点像你想用一种语言来翻译如果不学习第一个,你就不会知道另一个人。