作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Metal 新手。我想从 CVImageBufferRef 制作 MTLTexture。我正在使用以下代码示例来执行此操作。
guard
let unwrappedImageTexture = imageTexture,
let texture = CVMetalTextureGetTexture(unwrappedImageTexture),
result == kCVReturnSuccess
else {
throw MetalCameraSessionError.failedToCreateTextureFromImage
}
在这里,imageTexture:CVMetalTexture。这是我在 Obj C 中的代码。
CVMetalTextureRef inputTexture;
NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey;
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];
AVAssetReaderTrackOutput track = [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:video
outputSettings:@{
(NSString *)kCVPixelBufferMetalCompatibilityKey: @YES,
key:value
}];
sampleBuffer = [track copyNextSampleBuffer];
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
if(kCVReturnSuccess != CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault, _context.textureCache , imageBuffer, NULL, MTLPixelFormatBGRA8Unorm, width, height, 0, &inputTexture)){
__VMLog(@"Texture Creation Error");
}
id<MTLTexture> it = CVMetalTextureGetTexture(inputTexture); //Returns nil
我的 MTLTexture 变量总是得到 nil。甚至没有发生纹理创建错误。但未生成 MTLTexture。
最佳答案
我找到了解决方案。似乎它需要一个 id 数组来获取 MTLTexture。
//Wrong approach
id<MTLTexture> it = CVMetalTextureGetTexture(inputTexture);
//Right approach
id<MTLTexture> it[1];
it[0] = CVMetalTextureGetTexture(inputTexture);
关于ios - 无法从 CVMetalTextureGetTexture 函数获取有效的 MTLTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380702/
我试图弄清楚所有权如何与函数 CVMetalTextureGetTexture 一起工作: CVMetalTextureRef textureRef; // ... textureRef is cre
我是 Metal 新手。我想从 CVImageBufferRef 制作 MTLTexture。我正在使用以下代码示例来执行此操作。 guard let unwrappedImageTe
我是一名优秀的程序员,十分优秀!