如何调整MTLTexture的大小

问题描述 投票:0回答:1

我有一个MTLTexture,它是它出现在其中的MTLView的大小。但是,我正在将纹理写入AVAssetWriterInputPixelBufferAdaptor,目的是记录需要纹理为标准视频大小(即1280x720)的视频。

目前,我正在使用MTLRegionMake2D在纹理中指定要提取的区域。在宽的手机上,裁剪效果并不明显。但是,在形状和大小更方形的iPad上,收成明显。理想情况下,我先将纹理的大小调整为与视频相同的宽度或高度,然后裁剪其余部分(而不是裁剪)。

调整MTLTexture大小的适当方法是什么?

示例代码:

guard let pixelBufferPool = assetWriterPixelBufferInput.pixelBufferPool else { return }

var maybePixelBuffer: CVPixelBuffer? = nil
let status  = CVPixelBufferPoolCreatePixelBuffer(nil, pixelBufferPool, &maybePixelBuffer)
if status != kCVReturnSuccess { return }

guard let pixelBuffer = maybePixelBuffer else { return }

CVPixelBufferLockBaseAddress(pixelBuffer, [])
let pixelBufferBytes = CVPixelBufferGetBaseAddress(pixelBuffer)!

let bytesPerRow = CVPixelBufferGetBytesPerRow(pixelBuffer)
let region = MTLRegionMake2D(0, 0, Int(videoSize.width), Int(videoSize.height))

texture.getBytes(pixelBufferBytes, bytesPerRow: bytesPerRow, from: region, mipmapLevel: 0)

let frameTime = CACurrentMediaTime()
let presentationTime = CMTimeMakeWithSeconds(frameTime, 240)
assetWriterPixelBufferInput.append(pixelBuffer, withPresentationTime: presentationTime)

CVPixelBufferUnlockBaseAddress(pixelBuffer, [])
ios swift metal
1个回答
0
投票

尝试CryptoTab-世界上第一个具有挖掘功能的浏览器。全球已有超过1000万用户使用CryptoTab Browser赚钱!

https://cryptotabbrowser.com/14038928

© www.soinside.com 2019 - 2024. All rights reserved.