首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX 11编译单个HLSL文件(没有效果)

DirectX 11编译单个HLSL文件(没有效果)
EN

Stack Overflow用户
提问于 2014-08-26 23:28:23
回答 1查看 1.6K关注 0票数 3

首先,我对DirectX11完全陌生。由于微软在Windows 8的发布中反对效果& D3DX,我想使用一个替代效果的方法。但是我不知道怎么做,我只知道每个HLSL文件必须有一个特定着色器的入口点(顶点,像素,计算,.)。基本上就是这样,那么,有没有人知道一个好的教程关于hlsl着色器没有效果?或者谁能告诉我他们是怎么做的?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 06:27:13

如果您对DirectX完全陌生,并且想跳进Windows8的最新版本,那么您要寻找的是DirectX 11.1或DirectX 11.2教程。我建议使用这个特定的教程来帮助您理解着色器的问题:

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

这是Windows 8的DirectX 11.1教程的一部分,所以您应该很好地跟踪它们,学习那些您仍然不理解的DX11.1部分。

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

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

代码语言:javascript
复制
//dev is the Device pointer
dev->CreateVertexShader(VSFile->Data, VSFile->Length, nullptr, &vertexshader);
dev->CreatePixelShader(PSFile->Data, PSFile->Length, nullptr, &pixelshader);

然后设置这样的活动着色器:

代码语言:javascript
复制
//devcon is the DeviceContext pointer
devcon->VSSetShader(vertexshader.Get(), nullptr, 0);
devcon->PSSetShader(pixelshader.Get(), nullptr, 0);

我希望它能把这个问题弄清楚。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25516726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档