gpt4 book ai didi

c++ - 我能以某种方式将 HLSL 放入 .lib 中吗?

转载 作者:行者123 更新时间:2023-11-28 07:06:51 27 4
gpt4 key购买 nike

我使用 DirectX 和 C++ 制作了一个 Sprite 渲染器,我想将其放入 .lib 文件中。

是否有可能以某种方式将两个(已编译的)着色器放入 .lib 中,这样我就不必在所有地方都包含它们了?现在我在运行时从磁盘读取它们,这当然意味着我必须将这两个 .cso 文件放在某个地方以便可以读取它们。

我想到的解决方案是将它们作为字符串放入项目中,然后在运行时编译它们,但这样不太方便...

最佳答案

如何创建一个包含 2 个无符号字符全局数组的 C 或 C++ 文件,并声明每个数组具有一个着色器文件的大小。然后用类似的东西初始化它们:

// let it start with a signature string not found anywhere else in the .obj file
// EXTRA is some extra bytes to account for alignment
unsigned char Shader1[SIZE_OF_SHADER_1+EXTRA] = "x2232323$$%**sswe";
unsigned char Shader2[SIZE_OF_SHADER_2+EXTRA] = "x2952378$@%**ssqw";

然后,在您的代码中使用这些数组,就好像它们实际上包含着色器的代码一样。最后,将它们编译成库后,使用十六进制编辑器找到起始字符串,并将整个着色器内容粘贴到那里。如果你找不到合适的十六进制编辑器,你可以很容易地编写一个小实用程序来读取一个文件,在另一个文件中找到一个签名字符串,然后将它读取的文件内容写入到第二个签名的位置。

然后您的库将包含其中的着色器。如果您将这个小实用程序编写为控制台应用程序,那么您可以在构建后步骤中调用它以在库中执行此“注入(inject)”。

关于c++ - 我能以某种方式将 HLSL 放入 .lib 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com