2014-02-08 1 views
2

나는 대상 사각형으로 경계 인수 r을 지정하여 [CIContext render:toIOSurface:bounds:colorSpace:]을 사용하여 IOSurface의 특정 위치에 CIImage를 렌더링하려고합니다.IOSurface의 특정 rect에 렌더링 CIImage

문서에 따르면이 기능은 작동하지만 CoreImage는 항상 이미지를 IOSurface의 왼쪽 하단 모서리에 렌더링합니다.

CoreImage에 버그가있는 것 같습니다.

이미지를 동일한 크기의 CIImage로 된 중간 IOSurface로 렌더링 한 다음 다른 표면으로 그 표면의 내용을 복사하여이 문제를 극복 할 수 있습니다. 그러나 솔루션에서 할당 및 복사를 피하고 싶습니다.

의견이 있으십니까?

답변

2

현재 API (엄청난 허풍)에 대해 원하는 것은 없습니다.

그러나 IOSurface를 텍스처로 감싸고 (CGLTexImageIOSurface2D 사용) CIContext의 contextWithCGLContext : ...를 사용한 다음 마지막으로 drawImage : inRect : fromRect :를 사용하여이 작업을 수행 할 수 있습니다.

그것은 거대한 해킹,하지만 (대부분) 작동 : https://github.com/ccgus/FMMicroPaintPlus/blob/master/CIMicroPaint/FMIOSurfaceAccumulator.m

+0

이 솔루션은 필요에 따라 이미지의 작은 부분을 렌더링하는 매우 느립니다. 주로 CoreImage가 CGDataProvider에서 GPU로 데이터를 복사 할 수 있기 때문에이 경우 자동 캐싱이 제대로 작동하지 않는 것으로 보입니다. –

관련 문제