【问题标题】:What is the difference between .hlsl and .hlsli?.hlsl 和 .hlsli 有什么区别?
【发布时间】:2017-10-18 11:25:48
【问题描述】:

两者似乎都是HLSL着色器语言,但它们之间有什么区别?

将 .hlsl 扩展名更改为 .hlsli 是否重要,反之亦然?

我发现的一篇文章说 .hlsli 文件没有进入编译,对吗? (关于 .hlsli 的文章太少,对此没有信心……)

最好只使用 .hlsli 文件,还是应该总是有一些 .hlsl 文件?

如果有人能说出它们之间的相同/不同之处以及它们的用法,将不胜感激。谢谢。

【问题讨论】:

    标签: shader hlsl


    【解决方案1】:

    .hlsl 是一个着色器文件(包含着色器声明),而 .hlsli 是一个包含文件(仅包含声明和宏,没有实际的着色器结构)

    【讨论】:

    • 我们可以把所有东西都放在 hlsli 文件中吗?就像有时人们将函数定义放在 .h 而不是 .cpp 中。
    • @adayoegi,不,因为 hlsli 不是头文件(它不是由任何工具编译的,而是头文件).. 它仅用于包含要包含在 hlsl 文件中的文本片段。
    • @adayoegi 您可以强制编译 hlsli(扩展名最终并不那么重要),但如果您这样做,大多数工具都不会成为您的朋友。
    • 您可以将函数定义放在 hlsli 文件中,hlsli 只是被复制粘贴。
    • @TomHuntington 是对的。最好在一个名为 Common.hlsli 的文件中声明所有常见的结构、cbuffers 和 I/O 结构,以便包含在游戏中的所有顶点和像素着色器中。同样,所有光照函数都可以在 Lighting.hlsli 之类的文件中只存储一次,确保您的光照模型具有单一的真实来源,而不是在不同着色器中单独存储相同函数的变体。
    【解决方案2】:

    hlsli 是 C++ 中编译文件 .cpp 的 .h/.hpp 头文件的 HLSL 等效项。与在不编译 .h 文件的 C++ 中一样,它们被包含到 .cpp 文件中,然后编译后者,.hlsli 文件也包含到 .hlsl 文件中,然后编译 .hlsl 文件。

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 2022-08-19
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      相关资源
      最近更新 更多