我想用鼠标来控制我的相机位置。这个想法是有一个全局变量 float3 pos
来承载当前相机位置,以便下一次更新将来自 pos
本身。
当我在 Metal
中声明全局变量
时:
float3 pos;
并收到此错误:
Global variable must have a constant address space qualifier.
但是如果我添加constant
,它就会变成只读,因此我无法更新我当前的位置。
我能想到的另一种选择是使用struct
。但这似乎有点过头了。
最好的方法是什么?
最佳答案
事实上,在 MSL
中只能将只读变量(常量)定义为全局变量。您可以通过缓冲区将鼠标坐标从主机 (API) 代码发送到着色器来完成此操作。在那里更新这些坐标的值,然后更新缓冲区,以便主机代码实时看到更新的值。这是一个 playground当您在渲染区域内单击时,它会显示控制台中的鼠标坐标。
关于macos - Metal Shading Language 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593977/