macos - Metal Shading Language 中的全局变量

标签 macos metal

我想用鼠标来控制我的相机位置。这个想法是有一个全局变量 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/

相关文章:

ios - 如何使用 Metal IOS 正确渲染 3d 模型?

swift - Metal:一旦为 MSL cikernel 设置编译器和链接器选项,.metal 文件中定义的 vertexFunction 将变为 nil

macos - 为什么我的 Firemonkey 应用程序在 OSX 上打开终端窗口,但在 Win32 上却打不开?

c++ - 按内核线程增量

macos - 适用于 Mac 应用程序的 Instagram API

swift - 最新版本的照片库是否已弃用 fetchAssetCollections 方法?

ios - 可以关闭 Metal 中的多缓冲/双缓冲吗?

ios - 在 Metal 中手动设置一维纹理

ios - 为团队 Mac 创建证书并仅授权自己创建配置文件

swift - Appkit:如何在本地文件夹上执行 NSMetadataQuery