kCIContextUseSoftwareRenderer является ключевым здесь:
+ (CIContext*)coreContextFor:(NSGraphicsContext *)context forceSoftware:(BOOL)forceSoftware
{
//CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSDictionary *contextOptions = [NSDictionary dictionaryWithObjectsAndKeys:
(id)colorSpace, kCIContextWorkingColorSpace,
(id)colorSpace, kCIContextOutputColorSpace,
[NSNumber numberWithBool:forceSoftware], kCIContextUseSoftwareRenderer,
nil];
CIContext* result = [CIContext contextWithCGContext:(CGContext *)[context graphicsPort] options:contextOptions];
CGColorSpaceRelease(colorSpace);
return result;
}
Рендеринг в программном обеспечении more (CPU) решает некоторые проблемы, но ... На современных машинах настолько сильно снижается производительность, что я не могу 'не сказать, что это решение.Я использую CoreImage в своих приложениях и всегда выполняю рендеринг с графическим процессором на экране, в то время как принудительный процессор используется только для сохранения.Я заметил, что рендеринг процессора немного более точен на моем тестовом оборудовании, и сохранение отфильтрованного изображения - это долгий процесс, я могу пожертвовать скоростью здесь.