我正在自学D3D11。我想知道c++中的变量是如何与着色器中的变量匹配的?
例如,来自D3D11:https://learn.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-resources-buffers-constant-how-to的教程
CBuffer在C++中的布局与在着色器中的布局完全相同。然而,在一些游戏引擎,如团结,着色器变量可以按任何顺序放置,只要我声明所有。这是如何实现的?
发布于 2021-09-11 23:57:05
发布于 2021-09-08 03:12:14
我还没有深入了解渲染引擎如何自动将着色器变量绑定到图形管道的布局中。但这是我的猜测。
这可以通过诸如glslang这样的工具来实现。这种工具可以将着色器源代码转换为抽象语法树( ast ),这意味着将着色代码解析为输入属性和输出变量等多种类型的ast节点。此时,它可以将显式布局分配给输入着色器变量,并将布局保存在着色器标题中。
以上只是我对可能的实现的猜测。
https://stackoverflow.com/questions/69082080
复制相似问题