创建 D3DX 着色器
是否可以在不使用 D3DX 函数的情况下创建着色器?
Is it possible to create shaders without the use of D3DX functions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
是否可以在不使用 D3DX 函数的情况下创建着色器?
Is it possible to create shaders without the use of D3DX functions?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
从 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
andIDirect3DDevice9::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.