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!(CGContext
ctx
: CGContext!, optionsdict
: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGContext:(CGContextRef)
ctx
options:(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!(CGLContext
ctx
: CGLContextObj, pixelFormatpf
: CGLPixelFormatObj, optionsoptions
: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGLContext:(CGLContextObj)
ctx
pixelFormat:(CGLPixelFormatObj)pf
options:(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!(CGLContext
ctx
: CGLContextObj, pixelFormatpf
: CGLPixelFormatObj, colorSpacespace
: CGColorSpace!, optionsoptions
: [NSObject : AnyObject]!) -> CIContextObjective C
+ (CIContext *)contextWithCGLContext:(CGLContextObj)
ctx
pixelFormat:(CGLPixelFormatObj)pf
colorSpace:(CGColorSpaceRef)space
options:(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!(forOfflineGPUAtIndex
index
: 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!(forOfflineGPUAtIndex
index
: UInt32, colorSpacecolorSpace
: CGColorSpace!, optionsoptions
: [NSObject : AnyObject]!, sharedContextsharedContext
: CGLContextObj) -> CIContextObjective C
+ (CIContext *)contextForOfflineGPUAtIndex:(unsigned int)
index
colorSpace:(CGColorSpaceRef)colorSpace
options:(NSDictionary *)options
sharedContext:(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 *)
im
fromRect:(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 *)
im
fromRect:(CGRect)r
format:(CIFormat)f
colorSpace:(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)
size
info:(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.
См. также
-
Представляет область изображения к прямоугольнику в месте назначения контекста.
Объявление
Параметры
im
A
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 *)
im
toBitmap:(void *)data
rowBytes:(ptrdiff_t)rb
bounds:(CGRect)r
format:(CIFormat)f
colorSpace:(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 *)
image
toIOSurface:(IOSurfaceRef)surface
bounds:(CGRect)r
colorSpace:(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() -> UInt32
Objective 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;
Константы
-
kCIContextOutputColorSpace
kCIContextOutputColorSpace
Ключ для цветового пространства для использования для изображений, прежде чем они будут представлены к контексту.
По умолчанию Базовое Изображение использует цветовое пространство GenericRGB, оставляющее согласование цветов системе. Можно указать различное пространство цвета вывода путем обеспечения Кварца 2D объект CGColorSpace (
CGColorSpaceRef
). (См. Кварц 2D Руководство по программированию для получения информации о создании и использовании объектов CGColorSpace.)Чтобы запросить, чтобы Базовое Изображение не выполняло управления цветом, укажите
NSNull
возразите как значение для этого ключа. Используйте эту опцию для изображений, не содержащих цветные данные (такие как повышение, отображается, карты вектора нормали, и выбрал функциональные таблицы).Доступный в OS X v10.4 и позже.
-
kCIContextWorkingColorSpace
kCIContextWorkingColorSpace
Ключ для цветового пространства для использования для операций изображения.
По умолчанию Базовое Изображение предполагает, что процессорные узлы составляют 128 бит на пиксель, линейный свет, предварительно умножил значения с плавающей точкой RGBA, использующие цветовое пространство GenericRGB. Можно указать различное рабочее цветовое пространство путем обеспечения Кварца 2D объект CGColorSpace (
CGColorSpaceRef
). Обратите внимание на то, что рабочее цветовое пространство должно быть основано на RGB. Если у Вас есть данные YUV, как введено (или другие данные, которые не основаны на RGB), можно использовать функции ColorSync для преобразования в рабочее цветовое пространство. (См. Кварц 2D Руководство по программированию для получения информации о создании и использовании объектов CGColorSpace.)Чтобы запросить, чтобы Базовое Изображение не выполняло управления цветом, укажите
NSNull
возразите как значение для этого ключа. Используйте эту опцию для изображений, не содержащих цветные данные (такие как повышение, отображается, карты вектора нормали, и выбрал функциональные таблицы).Доступный в OS X v10.4 и позже.
-
kCIContextUseSoftwareRenderer
kCIContextUseSoftwareRenderer
Ключ для включения использования средства рендеринга программного обеспечения. Если связанное
NSNumber
объектYES
true
, тогда средство рендеринга программного обеспечения требуется.Доступный в OS X v10.4 и позже.
Обсуждение
Для обсуждения того, когда использовать опции и управление цветом, см. Базовое Руководство по программированию Изображения.
-