我创建了一个着色器,它在VS2012着色器设计器中似乎工作得很好。它将其保存为DGSL格式,然后我将其导出为HLSL。
我以为我可以在XNA项目中使用它,但有两件事对我来说非常新鲜,我希望有人能给我指明正确的方向:
1)到目前为止,我看到的每个着色器都有一个如下所示的部分
technique RibbonShader
{
pass Pass0
{
VertexShader = compile vs_2_0 VertexShader();
PixelShader = compile ps_2_0 PixelShader();
}
}不幸的是,由VS2012导出特性生成的HLSL只有一个主函数,如下所示:
P2F main(V2P pixel)
{
// lots of stuff
return result;
}有人能轻轻地解释一下我需要做些什么才能让我的着色器(具有'main‘功能的着色器)在设计器中工作得如此好,以一种具有上述技术/通道格式的格式?
发布于 2013-03-13 21:40:16
technique RibbonShader
{
pass Pass0
{
VertexShader = compile vs_2_0 VertexShader();
PixelShader = compile ps_2_0 PixelShader();
}
}是用于使用效果框架的着色器的格式。Visual Studio生成的着色器只是一个具有单个main函数的顶点或像素着色器。
要将其转换为效果文件,您必须添加技术部分并使用效果框架。就像这样
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(效果文件)还是顶点/像素着色器及其着色器模型版本。
希望这能有所帮助。
https://stackoverflow.com/questions/15317883
复制相似问题