创建 D3DX 着色器

发布于 2024-11-02 15:38:00 字数 33 浏览 2 评论 0原文

是否可以在不使用 D3DX 函数的情况下创建着色器?

Is it possible to create shaders without the use of D3DX functions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沧桑㈠ 2024-11-09 15:38:00

从 D3D9 开始,HLSL 编译器是 D3DX 库的一部分。要在 HLSL 中编写着色器,您必须使用 D3DX。

但是,有 IDirect3DDevice9::CreatePixelShader< /code>IDirect3DDevice9::CreateVertexShader,它从着色器字节代码(即 HLSL 编译器生成的代码)创建着色器句柄。

您可以脱机运行 HLSL 编译器(请参阅 D3DXCompileShader),将机器代码保存到文件中并在运行时使用上述函数加载它。遗憾的是,这意味着您不能依赖 D3DX 框架完成的工作。在这种情况下,上传常量和优化更改完全取决于您。

The HLSL compiler is, as of D3D9, part of the D3DX library. To write your shaders in HLSL, you have to use D3DX.

However, there's IDirect3DDevice9::CreatePixelShader and IDirect3DDevice9::CreateVertexShader, which create a shader handle from shader byte code, that is, from what is generated by the HLSL compiler.

You can run the HLSL compiler offline (see D3DXCompileShader), save the machine code to a file and load it at runtime using the aforementioned functions. Sadly this means that you cannot rely on the work that is otherwise done by the D3DX framework. Uploading your constants and optimizing changes is totally up to you in this case.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文