【问题标题】:What is the difference between .HLSL and .VS and .PS code for DirectX11?DirectX11 的 .HLSL 和 .VS 和 .PS 代码有什么区别?
【发布时间】:2021-12-25 03:47:23
【问题描述】:

我正在关注 Rastertek 教程,http://www.rastertek.com/dx11s2tut04.html

在此代码中,着色器是从 *.vs 和 *.ps 文件编译的

result = D3DCompileFromFile("light.vs", NULL, NULL, "LightVertexShader", "vs_5_0", D3D10_SHADER_ENABLE_STRICTNESS, NULL, &vertexShaderBuffer, &errorMessage);

result = D3DCompileFromFile("light.ps", NULL, NULL, "LightPixelShader", "ps_5_0", D3D10_SHADER_ENABLE_STRICTNESS, NULL, &pixelShaderBuffer, &errorMessage);

教程提到了使用 HLSL,大多数在线教程也使用它,但是 HLSL 看起来不像 *.vs 和 *.ps 文件,HLSL 看起来更像 C++ 代码并且有一个 Main( ) 函数。

这些本质上是使用不同语言的相同着色器吗? 哪个更新更好用?

谢谢,

【问题讨论】:

  • HLSL 是一种语言,文件可以按照你想要的方式命名。这里的两个文件都包含 HLSL 代码,但作者为像素着色器 (ps) 创建了一个单独的文件,为顶点着色器 (vs) 创建了另一个文件。没有什么“更新更好”。

标签: c++ visual-studio directx directx-11


【解决方案1】:

HLSL 是一种语言(高级着色语言),您可以随意命名着色器文件的扩展名,因为归根结底,所有这些代码都是文本格式。但是,如果您将扩展名命名为 .hlsl 或 .HLSL,并且如果您下载 Visual Studio 的 HLSL 插件,那么您的代码将突出显示。你的代码也会有语法,所以如果你的代码有错误,编译器会告诉你 hlsl 代码中的错误。

【讨论】:

  • @Mi Po 你有更新吗?如果您的案例已经解决,请帮忙标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2015-05-24
  • 2015-01-13
  • 2015-05-30
  • 1970-01-01
  • 2013-02-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多