CIImage를 kCVPixelFormatType_128RGBAFloat 유형의 픽셀 버퍼에 렌더링하려고합니다. 그러나 CIContext.render()는 "지원되지 않는 형식"을 말하는 데 실패합니다. - 주장은 발생하지 않습니다CIImage를 32 비트/채널 부동 소수점 픽셀 버퍼로 렌더링하려면 어떻게해야합니까?
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)
버퍼가 성공적으로 생성 : 나는 아이폰 7 플러스 실행 아이폰 OS (11)
여기 내 코드의 테스트. 마지막 줄의 "지원되지 않는 형식"을 말하는 데 실패한 렌더링 만 있습니다.
두 번째 nil을 [kCVPixelBufferIOSurfacePropertiesKey: [:]] as CFDictionary
으로 바꾸어도 IOSurface-backed CVPixelBuffer을 만들려고했으나 도움이되지 않았습니다.
어떻게 작동합니까?
형식이 kCVPixelFormatType_128RGBAFloat 여야하는데 여기에 들어가기에는 너무 복잡합니다. 즉, 반올림 할 수없는 소수 값을 포함하여 픽셀 값의 범위가 0-255보다 큰 것으로 단정합니다. CIContext를 호출 MTLDevice
- kCVPixelFormatType_64ARGB
- software renderer
- : 은 좀 더 일을 시도했다. createCGImage()
- MTLTexture로 렌더링 하나 어떻게 만들지 알 수 없습니다.
- IOSurface로 렌더링
- CIContext()에서 clearCaches()을 호출합니다.
- 전화는 reclaimResources()이지만 iOS에서는 사용할 수 없습니다.
- 내 입력이 < 인 것을 확인합니다. CIContext. inputImageMaximumSize() 및 outputImageMaximumSize()
- 은 raw 바이트 배열로 렌더링된다.
이들 중 아무 것도 작동하지 않았습니다. 채널 이미지 당 32 비트 float 또는 채널 int 당 16 비트 렌더링이 지원되지 않습니까?