DirectX 11编译单个HLSL文件(无效果)



首先,我对DirectX11完全陌生。作为微软不赞成的效果&D3DX随着Windows8的发布,我想使用一个替代效果。然而,我不知道如何做到这一点,我只知道每个HLSL文件都必须有一个特定着色器的入口点(顶点、像素、计算…)。基本上就是这样,所以,有人知道关于没有效果的HLSL着色器的好教程吗?或者有人能告诉我他们是怎么做的吗?

提前感谢!

如果您是DirectX的新手,并且想直接进入Windows 8的最新版本,那么您需要的是DirectX 11.1或DirectX 11.2的教程。我建议这个特定的教程来帮助你理解着色器的问题:

http://www.directxtutorial.com/Lesson.aspx?lessonid=111-4-5

这是适用于Windows 8的DirectX 11.1教程的一部分,所以你应该很好地遵循它们来学习DX 11.1中你仍然不理解的部分。

现在,让我总结一下在DX11.1的新世界中如何在没有效果的情况下处理着色器的教程。

HLSL着色器文件现在是Visual studio解决方案的一部分。应该为顶点着色器和像素着色器创建单独的文件。它们将与您的程序代码一起编译,因此您应该在运行时加载已经编译的二进制代码。您将此代码存储在字节数组中(例如,VSFile->Data和PSFile->Data),并使用创建着色器对象

//dev is the Device pointer
dev->CreateVertexShader(VSFile->Data, VSFile->Length, nullptr, &vertexshader);
dev->CreatePixelShader(PSFile->Data, PSFile->Length, nullptr, &pixelshader);

然后设置活动着色器,如下所示:

//devcon is the DeviceContext pointer
devcon->VSSetShader(vertexshader.Get(), nullptr, 0);
devcon->PSSetShader(pixelshader.Get(), nullptr, 0);

我希望它能澄清这个问题。

最新更新