*.hlsl文件是干什么的,这个文件和*.fx文件有什么关系?

What does *.hlsl files do, what the relationship between this file and *.fx file?

我正在阅读 DirectX 项目的示例,我看到了 *.fx*.hlsl 文件。

我知道fx是DirectX读取的效果文件,但是hlsl文件的作用是什么?这些文件有用吗?

.hlsl 文件包含着色器及其包含。 .fx 效果系统已弃用,不再包含在 DirectX SDK 中。

历史上 fx 包含使用 Effects 系统语法(techniquepass 等)的着色器,而 hlsl 包含没有 Effects 系统语法的纯 HLSL 着色器。

然而,这纯粹是一种约定,实际上并没有得到特别一致的遵守。最后,重要的是您使用什么配置文件来编译文件。 VS 2012+ 将同样对待 fxhlsl 文件(即,作为您使用 FXC 构建的文件)。

Direct3D 11 的最新效果在 CodePlex and GitHub 上可用,但对 fx_5_0 配置文件的编译器支持已正式弃用。它仍然有效,但它有一些已知问题,可能会在未来的某个时候被删除。

在 Effects 11 项目网站上查看此讨论帖:What's the difference between an .fx and .hlsl file anyhow?