【发布时间】:2017-06-14 10:52:48
【问题描述】:
对于基于 Metal 的 ImageView 的每一个实现,我都面临着同样的问题
let targetTexture = currentDrawable?.texture else{ return }
“MTLDrawable”类型的值没有成员“纹理”
好像苹果改变了一些金属api
这是我尝试使用的完整功能:
func renderImage()
{
guard let
image = image,
let targetTexture = currentDrawable?.texture else{return}
let commandBuffer = commandQueue.makeCommandBuffer()
let bounds = CGRect(origin: CGPoint.zero, size: drawableSize)
let originX = image.extent.origin.x
let originY = image.extent.origin.y
let scaleX = drawableSize.width / image.extent.width
let scaleY = drawableSize.height / image.extent.height
let scale = min(scaleX, scaleY)
let scaledImage = image
.applying(CGAffineTransform(translationX: -originX, y: -originY))
.applying(CGAffineTransform(scaleX: scale, y: scale))
ciContext.render(scaledImage,
to: targetTexture,
commandBuffer: commandBuffer,
bounds: bounds,
colorSpace: colorSpace)
commandBuffer.present(currentDrawable!)
commandBuffer.commit()
}
【问题讨论】:
-
显示
currentDrawable变量的声明和赋值。根据错误,它是MTLDrawable类型,实际上没有texture属性。我想你在想CAMetalDrawable,确实如此。 -
@KenThomases 但在每个实现中,金属套件视图都是以这种方式完成的,并且无法从 MTLDrawable 调用 CAMetalDrawable
-
你在实现
MTKView的子类吗?
标签: ios core-image metal