CIContext
CIContext класс обеспечивает контекст оценки для рендеринга a CIImage объект через 2D Кварц или OpenGL. Вы используете CIContext объекты в сочетании с другими Базовыми классами Изображения, такой как CIFilter, CIImage, и CIColor, использовать в своих интересах встроенные Базовые фильтры Изображения при обработке изображений.
CIContext и CIImage объекты являются неизменными, что означает, что каждый может быть совместно использован безопасно среди потоков. Многократные потоки могут использовать тот же GPU или CPU CIContext возразите для рендеринга CIImage объекты. Однако дело обстоит не так для CIFilter объекты, которые являются непостоянными. A CIFilter объект не может быть совместно использован безопасно среди потоков. Если его собственное, приложение многопоточно, каждый поток необходимо создать CIFilter объекты. Иначе, Ваше приложение могло неожиданно вести себя.
Оператор импорта
Swift
import QuartzCore
Objective C
@import QuartzCore;
Доступность
Доступный в OS X v10.4 и позже.
-
Создает Базовый контекст Изображения из Кварцевого контекста, с помощью указанных опций.
Объявление
Swift
init!(CGContextctx: CGContext!, optionsdict: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGContext:(CGContextRef)ctxoptions:(NSDictionary *)dictПараметры
ctxКварцевый контекст графики (
CGContextRefобъект), или полученный из системы или создаваемого использования Кварца функционируют такой какCGBitmapContextCreate. Посмотрите Кварц 2D Руководство по программированию для получения информации о создании Кварцевых контекстов графики.dictСловарь, содержащий информацию о цветовом пространстве. Можно передать любой из ключей, определенных в
“Context Options”вместе с надлежащим значением.Обсуждение
После вызова этого метода Базовое Изображение рисует содержание к указанному Кварцевому контексту графики.
Когда Вы создаете a
CIContextобъект с помощью Кварцевого контекста графики, любые трансформации, уже установленные на Кварцевом получении влияния контекста графики в тот контекст.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
-
Создает Базовый контекст Изображения из контекста CGL, с помощью указанных опций и объекта формата пикселя.
Оператор осуждения
Вместо этого используйте
contextWithCGLContext:pixelFormat:colorSpace:options:.Объявление
Swift
init!(CGLContextctx: CGLContextObj, pixelFormatpf: CGLPixelFormatObj, optionsoptions: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGLContext:(CGLContextObj)ctxpixelFormat:(CGLPixelFormatObj)pfoptions:(NSDictionary *)optionsПараметры
ctxКонтекст CGL (
CGLContextObjобъект), получают путем вызывания функции CGLCGLCreateContext.pfОбъект формата пикселя CGL (
CGLPixelFormatObjобъект) создаваемый путем вызывания функции CGLCGLChoosePixelFormat. Этим параметром должен быть тот же объект формата пикселя, используемый для создания контекста CGL. Объект формата пикселя должен быть допустимым для времени жизни Базового контекста Изображения. Не выпускайте объект формата пикселя после выпуска Базового контекста Изображения.optionsСловарь, содержащий информацию о цветовом пространстве. Можно обеспечить ключи
kCIContextOutputColorSpaceилиkCIContextWorkingColorSpaceвместе с aCGColorSpaceRefобъект для каждого цветового пространства.Обсуждение
После вызова этого метода Базовое Изображение вовлекает содержание в поверхность (drawable объект) присоединенный к контексту CGL. Контекст CGL является OS X контекст OpenGL. Для получения дополнительной информации см. Руководство по программированию OpenGL для Mac.
Когда Вы создаете a
CIContextобъект с помощью контекста CGL, всего набора состояний OpenGL для рендеринга влияния контекста CGL к тому контексту. Это означает, что координата и трансформации области просмотра установили на контексте CGL, а также цвете вершины.Для лучших результатов следуйте этим инструкциям при использовании Базового Изображения для рендеринга в контексте OpenGL:
Гарантируйте, что единый блок в координатном пространстве контекста OpenGL представляет единственный пиксель в устройстве вывода.
Базовое координатное пространство Изображения возникает в левом нижнем углу экрана. Необходимо сконфигурировать контекст OpenGL таким же образом.
Состояние смешивания контекста OpenGL уважает Базовое Изображение. Если изображение, которое Вы хотите представить, содержит полупрозрачные пиксели, лучше позволять смешать использование функции смешения с параметрами
GL_ONE, GL_ONE_MINUS_SRC_ALPHA, как показано в следующем примере кода.
Некоторая типичная инициализация кодирует для представления с шириной
Wи высотаH:glViewport (0, 0, W, H);glMatrixMode (GL_PROJECTION);glLoadIdentity ();glOrtho (0, W, 0, H, -1, 1);glMatrixMode (GL_MODELVIEW);glLoadIdentity ();glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);glEnable (GL_BLEND);
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
Осуждаемый в OS X v10.6.
См. также
-
init (CGLContext:pixelFormat:colorSpace:options:) + contextWithCGLContext:pixelFormat:colorSpace:options:Создает Базовый контекст Изображения из контекста CGL, с помощью указанных опций, цветового пространства и объекта формата пикселя.
Объявление
Swift
init!(CGLContextctx: CGLContextObj, pixelFormatpf: CGLPixelFormatObj, colorSpacespace: CGColorSpace!, optionsoptions: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGLContext:(CGLContextObj)ctxpixelFormat:(CGLPixelFormatObj)pfcolorSpace:(CGColorSpaceRef)spaceoptions:(NSDictionary *)optionsПараметры
ctxКонтекст CGL, полученный путем вызывания функции CGL
CGLCreateContext.pfФормат пикселя CGL возражает или полученный из системы или создаваемый путем вызывания функции CGL такой как
CGLChoosePixelFormat. Этот параметр должен быть тем же объектом формата пикселя, используемым для создания контекста CGL. Объект формата пикселя должен быть допустимым для времени жизни Базового контекста Изображения. Не выпускайте объект формата пикселя после выпуска Базового контекста Изображения.spaceОбъект цветового пространства, инкапсулирующий информацию о цветовом пространстве, использующуюся, чтобы указать, как интерпретируются значения цвета.
optionsСловарь, содержащий опции для создания a
CIContextобъект. Можно передать любой из ключей, определенных в“Context Options”вместе с надлежащим значением.Обсуждение
После вызова этого метода Базовое Изображение вовлекает содержание в поверхность (drawable объект) присоединенный к контексту CGL. Контекст CGL является OS X контекст OpenGL. Для получения дополнительной информации см. Руководство по программированию OpenGL для Mac.
Когда Вы создаете a
CIContextобъект с помощью контекста CGL, всего набора состояний OpenGL для рендеринга влияния контекста CGL к тому контексту. Это означает, что координата и трансформации области просмотра установили на контексте CGL, а также цвете вершины, получении влияния к тому контексту.Для лучших результатов следуйте этим инструкциям при использовании Базового Изображения для рендеринга в контексте OpenGL:
Гарантируйте, что единый блок в координатном пространстве контекста OpenGL представляет единственный пиксель в устройстве вывода.
Базовое координатное пространство Изображения возникает в нижнем левом углу экрана. Необходимо сконфигурировать контекст OpenGL таким же образом.
Состояние смешивания контекста OpenGL уважает Базовое Изображение. Если изображение, которое Вы хотите представить, содержит полупрозрачные пиксели, лучше позволять смешать использование функции смешения с параметрами
GL_ONE, GL_ONE_MINUS_SRC_ALPHA, как показано в следующем примере кода.
Некоторая типичная инициализация кодирует для представления с шириной
Wи высотаH:glViewport (0, 0, W, H);glMatrixMode (GL_PROJECTION);glLoadIdentity ();glOrtho (0, W, 0, H, -1, 1);glMatrixMode (GL_MODELVIEW);glLoadIdentity ();glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);glEnable (GL_BLEND);
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.6 и позже.
См. также
-
Создает Базовый контекст Изображения с помощью GPU, в настоящее время не управляющего дисплеем.
Объявление
Swift
init!(forOfflineGPUAtIndexindex: UInt32) -> CIContextObjective C
+ (CIContext *)contextForOfflineGPUAtIndex:(unsigned int)indexПараметры
indexИндекс оффлайнового GPU, с которым можно создать контекст; число между нулем и значением, возвращенным
offlineGPUCountметод.Возвращаемое значение
Базовый контекст Изображения.
Обсуждение
Устройства GPU, в настоящее время не использующиеся для управления дисплеем, могут использоваться для Базового рендеринга Изображения. Используйте
offlineGPUCountметод, чтобы определить, доступны ли какие-либо такие GPUs.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.10 и позже.
-
init (forOfflineGPUAtIndex:colorSpace:options:sharedContext:) + contextForOfflineGPUAtIndex:colorSpace:options:sharedContext:Создает Базовый контекст Изображения с помощью GPU, в настоящее время не управляющего дисплеем с указанными опциями.
Объявление
Swift
init!(forOfflineGPUAtIndexindex: UInt32, colorSpacecolorSpace: CGColorSpace!, optionsoptions: [NSObject : AnyObject]!, sharedContextsharedContext: CGLContextObj) -> CIContextObjective C
+ (CIContext *)contextForOfflineGPUAtIndex:(unsigned int)indexcolorSpace:(CGColorSpaceRef)colorSpaceoptions:(NSDictionary *)optionssharedContext:(CGLContextObj)sharedContextПараметры
indexИндекс оффлайнового GPU, с которым можно создать контекст; число между нулем и значением, возвращенным
offlineGPUCountметод.colorSpaceОбъект цветового пространства, инкапсулирующий информацию о цветовом пространстве, использующуюся, чтобы указать, как интерпретируются значения цвета.
optionsСловарь, содержащий опции для создания a
CIContextобъект. Можно передать любой из ключей, определенных в“Context Options”вместе с надлежащим значением.sharedContextКонтекст CGL, с которым можно совместно использовать ресурсы OpenGL, полученные путем вызывания функции CGL
CGLCreateContext. ПередачаNULLиспользовать контекст, не совместно использующий ресурсы OpenGL.Возвращаемое значение
Базовый контекст Изображения.
Обсуждение
Устройства GPU, в настоящее время не использующиеся для управления дисплеем, могут использоваться для Базового рендеринга Изображения. Используйте
offlineGPUCountметод, чтобы определить, доступны ли какие-либо такие GPUs.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.10 и позже.
-
Создает Кварц 2D изображение из области Базового объекта изображения Изображения.
Объявление
Objective C
- (CGImageRef)createCGImage:(CIImage *)imfromRect:(CGRect)rПараметры
imБазовый объект изображения Изображения.
rОбласть изображения для рендеринга.
Возвращаемое значение
Кварц 2D изображение. Вы ответственны за выпуск возвращенного изображения, когда Вам больше не нужен он.
Обсуждение
Представляет область изображения во временный буфер с помощью контекста, затем создает и возвращает Кварц 2D изображение с результатами.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
-
Создает Кварц 2D изображение из области Базового объекта изображения Изображения.
Объявление
Swift
func createCGImage(_im: CIImage!, fromRectr: CGRect, formatf: CIFormat, colorSpacecs: CGColorSpace!) -> CGImage!Objective C
- (CGImageRef)createCGImage:(CIImage *)imfromRect:(CGRect)rformat:(CIFormat)fcolorSpace:(CGColorSpaceRef)csПараметры
imБазовый объект изображения Изображения.
rОбласть изображения для рендеринга.
fФормат изображения.
csЦветовое пространство изображения.
Возвращаемое значение
Кварц 2D изображение. Вы ответственны за выпуск возвращенного изображения, когда Вам больше не нужен он.
Обсуждение
Представляет область изображения во временный буфер с помощью контекста, затем создает и возвращает Кварц 2D изображение с результатами.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.5 и позже.
См. также
-
Создает объект CGLayer из предоставленных параметров.
Объявление
Swift
func createCGLayerWithSize(_size: CGSize, infod: CFDictionary!) -> CGLayer!Objective C
- (CGLayerRef)createCGLayerWithSize:(CGSize)sizeinfo:(CFDictionaryRef)dПараметры
sizeРазмер, в модулях пространства пользователя по умолчанию, уровня относительно графического контекста.
dСловарь, передающийся
CGLayerCreateWithContextкакauxiliaryInfoпараметр. ПередачаNULLпотому что этот параметр резервируется для будущего использования.Возвращаемое значение
Объект CGLayer.
Обсуждение
После вызова этого метода Базовое Изображение вовлекает содержание в объект CGLayer. Базовое Изображение создает объект CGLayer путем вызова Кварца 2D функция
CGLayerCreateWithContext, чей прототип:CGLayerRef CGLayerCreateWithContext (CGContextRef context,CGSize size,CFDictionaryRef auxiliaryInfo);
Базовое Изображение передает
CIContextвозразите какcontextпараметр, размер какsizeпараметр и словарь какauxiliaryInfoпараметр. Для получения дополнительной информации об объектах CGLayer посмотрите Кварц 2D Руководство по программированию и Ссылка CGLayer.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
-
drawImage:atPoint:fromRect: - drawImage:atPoint:fromRect:(OS X v10.8)Представляет область изображения к точке в месте назначения контекста.
Оператор осуждения
Вместо этого используйте
drawImage:inRect:fromRect:.Параметры
imБазовый объект изображения Изображения.
pТочка в месте назначения контекста для рисования к.
srcОбласть изображения для рисования.
Обсуждение
Этот метод, потому что это неоднозначно относительно модулей размерностей и не будет работать как ожидалось в среде с высокой разрешающей способностью, которая является, почему необходимо использовать
drawImage:inRect:fromRect:вместо этого.На платформах iOS этот метод рисует изображение на буфер рендеринга для OpenGL контекст ES. Используйте этот метод только если
CIContextобъект создается сcontextWithEAGLContext:, и следовательно, Вы представляете к CAEAGLLayer.Оператор импорта
Objective C
@import QuartzCore;Доступность
Доступный в OS X v10.4 и позже.
Осуждаемый в OS X v10.8.
См. также
-
Представляет область изображения к прямоугольнику в месте назначения контекста.
Объявление
Параметры
imA
CIImageобъект.destПрямоугольник в месте назначения контекста для вовлечения. Изображение масштабируется для заполнения целевого прямоугольника.
srcПодобласть изображения, что Вы хотите вовлечь контекст с источником и целевым размером, определенным
destпараметр. Этот прямоугольник всегда находится в пиксельных размерностях.Обсуждение
На iOS этот метод рисует
CIImageобъект в renderbuffer для OpenGL контекст ES. Используйте этот метод только еслиCIContextобъект создается сcontextWithEAGLContext:и если Вы представляете к CAEAGLayer.На OS X необходимо знать ли
CIContextобъект создается с aCGContextRefили aCGLContextобъект. Если Вы создаетеCIContextобъект с aCGContextRef, размерности целевого прямоугольника находятся в точках. Если Вы создаетеCIContextобъект с aCGLContextобъект, размерности находятся в пикселях.На iOS 5 этот метод синхронен. На iOS 6 этот метод является асинхронным. Для приложений, соединенных на iOS 5, этот метод будет продолжать быть синхронным.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
-
рендеринг (_: toBitmap:rowBytes:bounds:format:colorSpace:) - render:toBitmap:rowBytes:bounds:format:colorSpace:Рендеринг к данному битовому массиву.
Объявление
Swift
func render(_im: CIImage!, toBitmapdata: UnsafeMutablePointer<Void>, rowBytesrb: Int, boundsr: CGRect, formatf: CIFormat, colorSpacecs: CGColorSpace!)Objective C
- (void)render:(CIImage *)imtoBitmap:(void *)datarowBytes:(ptrdiff_t)rbbounds:(CGRect)rformat:(CIFormat)fcolorSpace:(CGColorSpaceRef)csПараметры
imБазовый объект изображения Изображения.
dataХранение для растровых данных.
rbБайты на строку.
rГраницы растровых данных.
fФормат растровых данных.
csЦветовое пространство для данных. Передача
NULLесли Вы хотите использовать пространство цвета вывода контекста.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.5 и позже.
-
Представляет область изображения в объект IOSurface.
Объявление
Swift
func render(_image: CIImage!, toIOSurfacesurface: IOSurface!, boundsr: CGRect, colorSpacecs: CGColorSpace!)Objective C
- (void)render:(CIImage *)imagetoIOSurface:(IOSurfaceRef)surfacebounds:(CGRect)rcolorSpace:(CGColorSpaceRef)csПараметры
imageБазовый объект изображения Изображения.
surfaceОбъект места назначения Айосерфэса.
rПрямоугольник в месте назначения Айосерфэсе возражает для вовлечения.
csЦветовое пространство объекта места назначения Айосерфэса.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.6 и позже.
-
Освобождает любые кэшированные данные, такие как временные изображения, связанные с контекстом, и выполняет сборщик «мусора».
Объявление
Swift
func clearCaches()Objective C
- (void)clearCachesОбсуждение
Можно использовать этот метод для удаления текстур из кэша текстуры, та ссылка удалила изображения.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Выполняет сборщик «мусора» для предъявления претензий в отношении любых ресурсов, которых больше не требует контекст.
Объявление
Swift
func reclaimResources()Objective C
- (void)reclaimResourcesОбсуждение
Системные вызовы этот метод автоматически после каждой работы рендеринга. Можно использовать этот метод для удаления текстур из кэша текстуры, та ссылка удалила изображения.
Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Возвращает число GPUs не в настоящее время управление дисплеем.
Объявление
Swift
class func offlineGPUCount() -> UInt32Objective C
+ (unsigned int)offlineGPUCountВозвращаемое значение
Число оффлайновых устройств GPU.
Обсуждение
Если это количество больше, чем нуль, система присоединила устройства GPU, в настоящее время не управляющие дисплеем. Можно использовать эти устройства для Базового рендеринга Изображения путем создания контекста с
contextForOfflineGPUAtIndex:илиcontextForOfflineGPUAtIndex:colorSpace:options:sharedContext:метод.Оператор импорта
Objective C
@import QuartzCore;Swift
import QuartzCoreДоступность
Доступный в OS X v10.10 и позже.
-
Ключи в словаре опций для a
CIContextобъект.Объявление
Swift
let kCIContextOutputColorSpace: NSString! let kCIContextWorkingColorSpace: NSString! let kCIContextUseSoftwareRenderer: NSString!Objective C
NSString *kCIContextOutputColorSpace; NSString *kCIContextWorkingColorSpace; NSString *kCIContextUseSoftwareRenderer;Константы
-
kCIContextOutputColorSpacekCIContextOutputColorSpaceКлюч для цветового пространства для использования для изображений, прежде чем они будут представлены к контексту.
По умолчанию Базовое Изображение использует цветовое пространство GenericRGB, оставляющее согласование цветов системе. Можно указать различное пространство цвета вывода путем обеспечения Кварца 2D объект CGColorSpace (
CGColorSpaceRef). (См. Кварц 2D Руководство по программированию для получения информации о создании и использовании объектов CGColorSpace.)Чтобы запросить, чтобы Базовое Изображение не выполняло управления цветом, укажите
NSNullвозразите как значение для этого ключа. Используйте эту опцию для изображений, не содержащих цветные данные (такие как повышение, отображается, карты вектора нормали, и выбрал функциональные таблицы).Доступный в OS X v10.4 и позже.
-
kCIContextWorkingColorSpacekCIContextWorkingColorSpaceКлюч для цветового пространства для использования для операций изображения.
По умолчанию Базовое Изображение предполагает, что процессорные узлы составляют 128 бит на пиксель, линейный свет, предварительно умножил значения с плавающей точкой RGBA, использующие цветовое пространство GenericRGB. Можно указать различное рабочее цветовое пространство путем обеспечения Кварца 2D объект CGColorSpace (
CGColorSpaceRef). Обратите внимание на то, что рабочее цветовое пространство должно быть основано на RGB. Если у Вас есть данные YUV, как введено (или другие данные, которые не основаны на RGB), можно использовать функции ColorSync для преобразования в рабочее цветовое пространство. (См. Кварц 2D Руководство по программированию для получения информации о создании и использовании объектов CGColorSpace.)Чтобы запросить, чтобы Базовое Изображение не выполняло управления цветом, укажите
NSNullвозразите как значение для этого ключа. Используйте эту опцию для изображений, не содержащих цветные данные (такие как повышение, отображается, карты вектора нормали, и выбрал функциональные таблицы).Доступный в OS X v10.4 и позже.
-
kCIContextUseSoftwareRendererkCIContextUseSoftwareRendererКлюч для включения использования средства рендеринга программного обеспечения. Если связанное
NSNumberобъектYEStrue, тогда средство рендеринга программного обеспечения требуется.Доступный в OS X v10.4 и позже.
Обсуждение
Для обсуждения того, когда использовать опции и управление цветом, см. Базовое Руководство по программированию Изображения.
-
