Macos 金属着色语言中的全局变量
我想用鼠标控制我的相机位置。其想法是使用一个全局变量Macos 金属着色语言中的全局变量,macos,metal,Macos,Metal,我想用鼠标控制我的相机位置。其想法是使用一个全局变量float3 pos,该变量携带当前摄像机位置,以便下一次更新将来自pos本身 当我在Metal中声明一个全局变量时: float3 pos; 并获取以下错误: 全局变量必须具有常量地址空间限定符 但如果我添加常量,它将变为只读,因此我无法更新当前位置 我能想到的另一种方法是使用struct。但这似乎有点过头了 执行此操作的最佳方法是什么?实际上,在MSL中只能将只读变量(常量)定义为全局变量。可以通过缓冲区将鼠标坐标从主机(API)代码发
float3 pos
,该变量携带当前摄像机位置,以便下一次更新将来自pos
本身
当我在Metal
中声明一个全局变量时:
float3 pos;
并获取以下错误:
全局变量必须具有常量地址空间限定符
但如果我添加常量
,它将变为只读,因此我无法更新当前位置
我能想到的另一种方法是使用struct
。但这似乎有点过头了
执行此操作的最佳方法是什么?实际上,在MSL
中只能将只读变量(常量)定义为全局变量。可以通过缓冲区将鼠标坐标从主机(API)代码发送到着色器来实现这一点。在这里,更新这些坐标的值,然后更新缓冲区,以便宿主代码实时查看更新的值。这是一个在渲染区域内单击时显示控制台中鼠标坐标的图标。我说的关于代码的话对吗:将mousebuffer
和exputffer
发送到内核
Mousebuffer
始终更新,并且extuffer
仅在鼠标按下时更新?正确。但是,您可以从UI类发送任何事件(或坐标),包括击键。