我正在关注Rastertek tutorials,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()函数。
这些着色器本质上是使用不同语言的相同着色器吗?哪一个更新更好用?
谢谢,
发布于 2021-11-14 11:27:38
HLSL是一种语言(高级着色语言),您可以使用您想要的任何名称来命名着色器文件的扩展名,因为在一天结束时,所有这些代码都是文本格式。但是如果你将这个扩展命名为.hlsl或.HLSL,并且你下载了用于Visual Studio的HLSL插件,那么你的代码将会高亮显示。此外,您的代码将具有语法,因此如果您的代码中有错误,编译器将在您的hlsl代码中告诉您错误。
https://stackoverflow.com/questions/69948948
复制相似问题