首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VS2012着色器设计器创建XNA着色器

使用VS2012着色器设计器创建XNA着色器
EN

Stack Overflow用户
提问于 2013-03-10 09:25:06
回答 1查看 639关注 0票数 3

我创建了一个着色器,它在VS2012着色器设计器中似乎工作得很好。它将其保存为DGSL格式,然后我将其导出为HLSL。

我以为我可以在XNA项目中使用它,但有两件事对我来说非常新鲜,我希望有人能给我指明正确的方向:

1)到目前为止,我看到的每个着色器都有一个如下所示的部分

代码语言:javascript
复制
technique RibbonShader
{
    pass Pass0
    {   
        VertexShader = compile vs_2_0 VertexShader();
        PixelShader  = compile ps_2_0 PixelShader();
    }
}

不幸的是,由VS2012导出特性生成的HLSL只有一个主函数,如下所示:

代码语言:javascript
复制
P2F main(V2P pixel)
{
    // lots of stuff
    return result;
}

有人能轻轻地解释一下我需要做些什么才能让我的着色器(具有'main‘功能的着色器)在设计器中工作得如此好,以一种具有上述技术/通道格式的格式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-13 21:40:16

代码语言:javascript
复制
technique RibbonShader
{
    pass Pass0
    {   
        VertexShader = compile vs_2_0 VertexShader();
        PixelShader  = compile ps_2_0 PixelShader();
    }
}

是用于使用效果框架的着色器的格式。Visual Studio生成的着色器只是一个具有单个main函数的顶点或像素着色器。

要将其转换为效果文件,您必须添加技术部分并使用效果框架。就像这样

代码语言:javascript
复制
V2P mainVS(...)
{
   // vertex shader
}

P2F mainPS(V2P pixel)
{
    // lots of stuff
    return result;
}

technique YourTechniqueName // can be anything you choose.
{
    pass Pass0
    {   
        VertexShader = compile vs_2_0 mainVS();
        PixelShader  = compile ps_2_0 mainPS();
    }
    // can have other passes
}

如果你不使用效果框架,你仍然可以使用单独的顶点/像素着色器文件,里面只有一个main,让Visual Studio将它们编译成二进制着色器文件,然后你可以将它们加载到你的应用程序中。

在Visual Studio 2012中,这是在将着色器文件添加到项目中时自动完成的。此外,当您右键单击并转到着色器文件的属性时,您可以更改它是*.fx(效果文件)还是顶点/像素着色器及其着色器模型版本。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15317883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档