2017-12-06 27 views
1

CIImageをタイプkCVPixelFormatType_128RGBAFloatのピクセルバッファにレンダリングしたいと思います。しかし、CIContext.render()は "サポートされていないフォーマット"と言って失敗します。私は、iOS 11.CIImageを32ビット/チャンネルの浮動小数点ピクセルバッファにレンダリングするにはどうすればよいですか?

を実行しているiPhone 7プラスでテストここに私のコードです:

let context = CIContext() 
var buffer: CVPixelBuffer? = nil 
let buffer = CVPixelBufferCreate(nil, 
           width, 
           height, 
           kCVPixelFormatType_128RGBAFloat, 
           nil, 
           &buffer) 
assert(buffer != nil, "Couldn't create buffer") 
context.render(ciImage, to: buffer) 

バッファが正常に作成された - アサーションは発生しません。最後の行のレンダリングでは、「サポートされていない形式」とは言いません。

また、第2のnilを[kCVPixelBufferIOSurfacePropertiesKey: [:]] as CFDictionaryに置き換えてIOSurface-backed CVPixelBufferを作成しようとしましたが、役に立たなかったです。

これを動作させるにはどうすればよいですか?

フォーマットがkCVPixelFormatType_128RGBAFloatである必要があります。これは、ここでは複雑すぎるため、ピクセル値は0〜255より大きい範囲になります(丸めできない小数点も含む)。 CIContextを呼び出すMTLDevice

  • に裏打ちされたCIContextを作成EAGLContext
  • に裏打ちされたCIContextを作成

    これらはいずれも機能しませんでした。レンダリングは、1チャネルあたり32ビットの浮動小数点数、または1チャネルあたり16ビットの整数で、Core Imageではサポートされていませんか?

  • 答えて

    関連する問題