将预编译的 HLSL 着色器加载到内存中以与 CreatePixelShader 一起使用
我需要将编译的像素着色器加载到内存中以与 CreatePixelShader 一起使用,但我无法使用任何 D3DX 调用。
我该怎么做?
(我使用 Visual Studio 2010 作为编译器,使用 C++ 作为语言)
I need to load a compiled pixel shader into memory to use with CreatePixelShader but I can't use any D3DX calls.
How can I do this?
(I'm using Visual Studio 2010 as my compiler and C++ as the language)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我意识到有人早些时候发布了伪代码。以下是使用 Windows SDK(而不是所要求的 D3DX 库)的 C++ 代码。
这里的“PixelShader.cso”是由 Visual Studio 11 从项目中的 .hlsl 文件生成的预编译 hlsl 着色器。编译后的 .cso 文件通常默认移至 Projects/ProjectName/Debug 文件夹。因此,在使用之前必须将其剪切并粘贴到与源代码相同的目录中。请注意,可以通过在 Visual Studio 11 中右键单击 HLSL 文件并编辑输出设置来更改此设置。默认情况下为:$(OutDir)%(Filename).cso,将其更改为:$(Directory)%(Filename).cso
请注意“PixelShader.cso”之前的 L。我的项目使用多字节字符集,如果您将其设置为 Unicode,则 L 可能不是必需的。
I realize someone posted pseudo-code earlier. Here is C++ code using the Windows SDK (and not the D3DX libraries as requested).
Here "PixelShader.cso" is the precompiled hlsl shader generated by Visual Studio 11 from a .hlsl file in the project. The compiled .cso file is usually moved to the Projects/ProjectName/Debug folder by default. As a result it must be cut and paste into the same directory as your source code before using. Mind you this setting can be changed by right-clicking the HLSL file while inside Visual Studio 11 and editing the Output Settings. By default its: $(OutDir)%(Filename).cso, change it to: $(Directory)%(Filename).cso
Take note of the L before "PixelShader.cso". My project was using the Multi-Byte Character Set, if you have yours set to Unicode the L might not be necessary.
使用 fxc 从命令行构建预编译着色器:
使用常规 C++ 文件加载代码加载预编译着色器数据。
在伪代码中:
build your precompiled shader from the command line using fxc:
load the precompiled shader data using regular c++ file loading code.
in psuedo-ish code: