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

时间:2014-08-26 23:28:23

标签: directx hlsl

首先,我对DirectX11完全不熟悉。正如微软弃用的影响& D3DX随着Windows 8的发布,我想用一种替代效果。但是我不知道该怎么做,我只知道每个HLSL文件必须有1个特定着色器的入口点(顶点,像素,计算......)。基本上就是这样,所以,有没有人知道关于没有效果的hlsl着色器的好教程?或者有人能告诉我他们是如何做到的?

提前致谢!

1 个答案:

答案 0 :(得分:5)

如果您对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部分。

现在,让我总结一下关于在DX 11.1的新世界中如何处理着色器而没有效果的教程。

HLSL着色器文件现在是Visual Studio sollutions的一部分。您应该为顶点和像素着色器创建单独的文件。它们将使用您的程序代码进行编译,因此您应该在运行时加载的是已编译的二进制代码。您将此代码存储在字节数组(例如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);

我希望这会使这个问题变得清晰。