CIKernel
CIKernel
объект управляет, основанная на GPU подпрограмма обработки изображений раньше создавала пользовательские Базовые фильтры Изображения. В OS X используйте CIKernel
класс для любого фильтра, включающего пользовательскую основанную на GPU обработку изображений. В iOS, для обеспечения лучшей производительности, используют подклассы CIColorKernel
и CIWarpKernel
при реализации фильтров, воздействующих только на цвет или информацию о геометрии, и использующих CIKernel
класс непосредственно только при реализации фильтров общего назначения, использующих и цвет и информацию о геометрии вместе.
Подпрограмма языка ядра для ядра фильтра общего назначения в iOS (или любого ядра фильтра в OS X) имеет следующие характеристики:
Его тип возврата
vec4
; т.е. это возвращает пиксельный цвет для выходного изображения.Это может использовать нуль или более входные изображения. Каждое входное изображение представлено параметром типа
sampler
.
Подпрограмма ядра обычно производит свой вывод путем вычисления координат исходного изображения (использующий destCoord
и samplerTransform
функции или samplerTransform
функция), выборки из исходных изображений (использующий sample
функция), и вычисляет заключительный пиксельный цвет (вывод с помощью return
ключевое слово). Например, Базовый источник Языка Ядра Изображения ниже реализует фильтр, проходящий через его входное неизменное изображение.
kernel vec4 do_nothing(sampler image) {
vec2 dc = destCoord();
return sample(image, samplerTransform(image, dc));
}
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Swift
import QuartzCore
Objective C
@import QuartzCore;
Доступность
Доступный в OS X v10.4 и позже.
-
Создает единственный объект ядра.
Объявление
Swift
init!(string
string
: String!) -> CIKernelObjective C
+ (CIKernel *)kernelWithString:(NSString *)
string
Параметры
string
Программа в Базовом Языке Ядра Изображения, содержащем единственную подпрограмму, отметила использование
kernel
ключевое слово.Возвращаемое значение
Новый объект ядра. В iOS класс возвращенного объекта может быть
CIKernel
,CIColorKernel
, илиCIWarpKernel
в зависимости от типа подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.Обсуждение
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в OS X v10.10 и позже.
-
Создает и возвращается и массив
CIKernel
объекты.Объявление
Swift
class func kernelsWithString(_
s
: String!) -> [AnyObject]!Параметры
s
Программа в Базовом Языке Ядра Изображения, содержащем одну или более подпрограмм, каждая из которых отмечена с помощью
kernel
ключевое слово.Возвращаемое значение
Массив
CIKernel
объекты. Массив содержит тотCIKernel
объекты для каждой подпрограммы ядра в предоставленной строке. В iOS каждый объект в массиве может иметь классCIKernel
,CIColorKernel
, илиCIWarpKernel
в зависимости от соответствующей подпрограммы, указанной в Базовой строке исходного кода Языка Ядра Изображения.Обсуждение
Базовый Язык Ядра Изображения является диалектом Языка Штриховки OpenGL. Посмотрите Базовую Ссылку Языка Ядра Изображения и Базовое Руководство по программированию Изображения для большего количества подробных данных.
Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
OS X v10.4 и позже.
-
Возвращает имя подпрограммы ядра.
Возвращаемое значение
Имя подпрограммы ядра.
Обсуждение
Имя подпрограммы ядра является идентификатором, используемым для объявления его в Базовом исходном коде Языка Ядра Изображения. Например, если Вы используете
kernelWithString:
метод для создания ядра из исходного кода ниже, имя возвращенногоCIKernel
объект является «moveUpTwoPixels».kernel vec4 moveUpTwoPixels (sampler image) {
vec2 dc = destCoord();
vec2 offset = vec2(0.0, 2.0);
return sample (image, samplerTransform (image, dc + offset));
}
Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в OS X v10.4 и позже.
-
Устанавливает селекторное Базовое использование Изображения для запросов представляющей интерес области для обработки изображений с ядром.
Объявление
Swift
func setROISelector(_
aMethod
: Selector)Objective C
- (void)setROISelector:(SEL)
aMethod
Параметры
aMethod
Селекторное имя.
Обсуждение
При применении ядра фильтра область интереса (ROI) является областью пикселей исходного изображения, которые должны быть обработаны для создания данной области пикселей конечного изображения. Для более подробного определения посмотрите Область Интереса.
aMethod
параметр должен использовать подпись, определяющуюся дляregionOf:destRect:userInfo:
метод, который является следующие:- (CGRect) regionOf:(int)samplerIndex destRect:(CGRect)r userInfo:obj;
где:
samplerIndex
определяет сэмплер для запросовdestRect
степень области, в координатах рабочей области, для рендеринга.userInfo
объект, связанный сkCIApplyOptionUserInfo
опция, когда ядро применяется к его параметрам (сapply:arguments:options:
метод aCIFilter
объект с помощью ядра).userInfo
важно, потому что переменные экземпляра не могут использоваться классом определения. Через переменные экземпляра нужно пройтиuserInfo
параметр.
regionOf:destRect:userInfo:
метод объекта CIFilter вызывает платформа. Этот метод возвращает прямоугольник, содержащий область сэмплера, что ядро должно представить указанный целевой прямоугольник.Выборка
regionOf:destRect:userInfo:
метод мог бы посмотреть следующим образом:- (CGRect)regionOf:(int)sampler destRect:(CGRect)r userInfo:params
{
float scale = fabs ([params X]);
return CGRectInset (r, scale * -1.3333, scale * -1.3333);
}
Если Вашему ядру не нужно изображение в
index
произвести вывод в прямоугольникеrect
, Ваш метод должен возвратитьсяCGRectNull
.В коде фильтра Вы устанавливаете селектор с помощью следующего:
[kernel setROISelector:@selector(regionOf:destRect:userInfo:)
]Также используйте
applyWithExtent:roiCallback:arguments:
метод для прямого применения ядра для создания выходного изображения, указывая обратный вызов ROI как блок или закрытие.Оператор импорта
Objective C
@import QuartzCore;
Swift
import QuartzCore
Доступность
Доступный в OS X v10.4 и позже.
См. также