我正在自学D3D11。我想知道c++中的变量如何与着色器中的变量匹配?
例如来自D3D11的教程:https://learn.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-resources-buffers-constant-how-to
C++中CBuffer的布局与shader中的布局完全相同。然而,在像Unity这样的一些游戏引擎中,着色器变量可以按任何顺序放置,只要我声明所有这些变量即可。这是如何实现的?
最佳答案
许多引擎(例如 Unity)都有着色器的动态绑定(bind)系统。这是 shader reflection 的某种组合和其他元数据。这是在旧 DirectX Effects system 中实现的也是如此。
最终,CPU 端内存缓冲区和着色器端常量缓冲区的布局仍然需要匹配,只是在运行时通过代码完成,而不是由开发人员完成。
关于unity-game-engine - C++ 代码和着色器代码之间的常量缓冲区变量如何匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69082080/