2015-10-21 19 views
2

我读过VS2015上的DirectX 11教程(http://www.rastertek.com/dx11s2tut04.html),发现作者分别使用.vs文件和.ps文件分别编译顶点和像素着色器。我应该在HLSL中使用哪种着色器文件格式?

我还发现,在“使用DirectX 11的3D游戏编程”一书中,作者使用.fx文件来整理本书中的着色器。

我应该用哪种方法用最新版本的Windows SDK开发我的direct3D程序,我想知道?因为我听说Effects11框架将来可能会被弃用。

+1

请参阅[此主题](https://fx11.codeplex.com/discussions/450240)关于效果11'状态'的讨论 –

回答

1

您应该避免在新项目中使用fx目标,并选择每阶段编译。请注意,这与您是否将着色器代码实际放置在单独的文件中无关,尽管每个着色器有一个.vs.ps是常见惯例。在最新的(Windows 10)编译器中已经弃用了对效果配置文件的完全D3D11支持(即fx_5_0),并且根本没有fx_5_1(某些功能需要着色器模型5.1)。

+0

你是什么意思'每个阶段的汇编'?不要加载预编译的效果文件并在运行时编译? –

+0

@StefanAgartsson在编译'?s_5_ [0/1]'时进行每阶段编译,其中'?'是'v'ertex,'p'ixel,'g'eometry,'h'ull,'d''之一,域或“c”计算。这与用于将多个着色器阶段的组合作为*技术*进行封装的'fx'配置文件形成对比。编译应该在编译时离线完成。 – MooseBoys

+0

也就是说,总是在编译时编译.fx?我真的不知道,除.fx包含所有着色器,而.vs或.ps描述单个着色器,那两者之间还有什么不同? – voidRyan