ios - 如何使用 Swift 将 Float uniform 传递给 iOS Metal 着色器?

标签 ios swift metal

我想将一个 float 传递给我的 Metal 着色器。我想不通。

这是我的着色器:

vertex float4 model_vertex(unsigned int iid[[instance_id]]
                           constant float angle) {
    float number = float(iid) / 64.0;
    return float4(number * sin(angle), number * cos(angle), 0.0, 1.0);
}

现在我想把它传递给着色器:

let renderPassDescriptor = MTLRenderPassDescriptor()
let renderEncoder = commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor)
// ...
let angle: Float = 0.5
renderEncoder.setUniform1(angle) // What do I do here?

如何传递单个浮点值?

最佳答案

同样在 10.11+ 和 iOS 9+ 中你可以使用:

public func setVertexBytes(bytes: UnsafePointer<Void>, length: Int, atIndex index: Int)

如果您只使用缓冲区一次(并且您的数据小于 4K 长),这比创建 MTLBuffer 更好。

关于ios - 如何使用 Swift 将 Float uniform 传递给 iOS Metal 着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298840/

相关文章:

ios - 如何在表格中显示自定义页脚 View ?

swift - 特定功能同时在所有 View 上运行。我怎样才能让它一个接一个地运行?

ios - 如何在不丢失格式的情况下将字符串转换为日期

ios - 使用 Metal 有效计算 UIImage/CIImage 中有多少透明像素

iphone - 在测试设备上测试时,ios 应用程序不起作用

ios - 如何在相同的 "didSelectRowAtIndexPath"方法中再次调用 "didSelectRowAtIndexPath"方法

ios - Google+ 邀请 - iOS SDK/API - 是否有类似于 Facebook 邀请的实用方法来邀请 Google Plus 用户

iOS:将图像添加到 UIButton,然后将按钮放入 ScrollView ,但只能看到一张图像?

SwiftUI MKMapView UIViewRepresentable - 简单应用程序崩溃。这是 'Metal API' 库错误还是我做了一些明显错误的事情?

ios - 如何调整/缩放 MTLTexture