QCPlugInOutputImageProvider
QCPlugInOuputImageProvider
протокол избавляет от необходимости использовать явные типы изображения для выходных портов изображения на пользовательском патче. Когда выходное изображение необходимо, методы в этом протоколе вызывает Кварцевый механизм Композитора. Если Ваш пользовательский патч имеет выходной порт изображения, необходимо реализовать надлежащие методы для рендеринга данных изображения и предоставлять информацию о месте назначения рендеринга и границах изображения.
Выходные изображения являются непрозрачными объектами провайдера, соответствующими этому протоколу. Для создания выходного порта изображения как свойства Objective-C 2.0 объявите его следующим образом:
@property(dynamic) id<QCPlugInOutputImageProvider> outputImage;
Для создания входного порта изображения динамично используют тип QCPortTypeImage
:
[self addOutputPortWithType:QCPortTypeImage
forKey:@”outputImage”
withAttributes:nil];
Для записи изображений в тот порт необходимо реализовать методы в этом протоколе и создать внутренний класс, представляющий изображения, произведенные пользовательским патчем. Например, простой интерфейс для провайдера изображения:
@interface MyOutputImage : NSObject <QCPlugInOutputImageProvider>
{
NSUInteger _width;
NSUInteger _height;
}
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import Quartz
Objective C
@import Quartz;
Доступность
Доступный в OS X v10.5 и позже.
-
renderToBuffer (_: withBytesPerRow:pixelFormat:forBounds:) - renderToBuffer:withBytesPerRow:pixelFormat:forBounds:
ТребуемыйПредставляет подобласть изображения в предоставленный буфер памяти с помощью указанного формата пикселя. (требуемый)
Объявление
Swift
optional func renderToBuffer(_
baseAddress
: UnsafeMutablePointer<Void>, withBytesPerRowrowBytes
: Int, pixelFormatformat
: String!, forBoundsbounds
: NSRect) -> BoolObjective C
- (BOOL)renderToBuffer:(void *)
baseAddress
withBytesPerRow:(NSUInteger)rowBytes
pixelFormat:(NSString *)format
forBounds:(NSRect)bounds
Параметры
baseAddress
Базовый адрес буфера памяти. Кварцевый механизм Композитора передает Вас адрес, который является выровненный на 16-байтовой границе.
rowBytes
Число байтов на строку данных изображения. Кварцевый механизм Композитора гарантирует, что это значение является кратным числом 16.
format
Формат пикселя данных изображения.
bounds
Границы подобласти.
Возвращаемое значение
YES
true
если изображение представляется успешно в буфер;NO
false
при отказе или если провайдер изображения не поддерживает рендеринг CPU.Обсуждение
Кварцевый механизм Композитора вызывает этот метод, когда этому нужны пиксели. Это дает Вам базовый адрес, число байтов строки и формат. Затем Вы пишете пиксели в буфер.
Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
copyRenderedTextureForCGLContext (_: pixelFormat:bounds:isFlipped:) - copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped:
ТребуемыйВозвращает имя текстуры OpenGL типа
GL_TEXTURE_RECTANGLE_EXT
это содержит подобласть изображения в данном формате пикселя. (требуемый)Объявление
Swift
optional func copyRenderedTextureForCGLContext(_
cgl_ctx
: CGLContextObj, pixelFormatformat
: String!, boundsbounds
: NSRect, isFlippedisFlipped
: UnsafeMutablePointer<ObjCBool>) -> GLuintObjective C
- (GLuint)copyRenderedTextureForCGLContext:(CGLContextObj)
cgl_ctx
pixelFormat:(NSString *)format
bounds:(NSRect)bounds
isFlipped:(BOOL *)isFlipped
Параметры
cgl_ctx
Контекст CGL для рендеринга к.
format
Строка, представляющая формат пикселя текстуры.
bounds
Границы подобласти изображения.
isFlipped
Набор к
YES
true
на выводе, если вертикально зеркально отражается содержание возвращенной текстуры.Возвращаемое значение
Имя текстуры OpenGL типа
GL_TEXTURE_RECTANGLE_EXT
это содержит подобласть изображения в данном формате пикселя или0
если не может быть предоставлена текстура.Обсуждение
Реализуйте этот метод, если Вы хотите создать текстуру сами или использовать объекты кадрового буфера (FBO). Использовать
<OpenGL/CGLMacro.h>
отправить команды в контекст OpenGL. Удостоверьтесь, что сохранили все состояния OpenGL кроме тех определенныхGL_CURRENT_BIT
.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
Представляет подобласть изображения к предоставленному контексту CGL. (требуемый)
Объявление
Swift
optional func renderWithCGLContext(_
cgl_ctx
: CGLContextObj, forBoundsbounds
: NSRect) -> BoolObjective C
- (BOOL)renderWithCGLContext:(CGLContextObj)
cgl_ctx
forBounds:(NSRect)bounds
Параметры
cgl_ctx
Контекст CGL для рендеринга к.
bounds
Границы подобласти.
Возвращаемое значение
YES
true
если успешный;NO
false
при отказе или если провайдер изображения не поддерживает рендеринг GPU.Обсуждение
Порт представления установлен для Вас. Матрицы представления и проекции модели установлены в идентификационные данные.
Ваш код OpenGL должен сохранить и восстановить все состояния за исключением тех, которые являются частью
GL_CURRENT_BIT
(позиция вершины, цвет, текстура, и т.д.). Также используйте макросы CGL вместо того, чтобы изменить текущий контекст включением этого оператора:#import <OpenGL/CGLMacro.h>
Для получения дополнительной информации посмотрите Кварцевого Композитора Пользовательское Руководство по программированию Патча.
Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
Выпускает ранее скопированную текстуру. (требуемый)
Объявление
Swift
optional func releaseRenderedTexture(_
name
: GLuint, forCGLContextcgl_ctx
: CGLContextObj)Objective C
- (void)releaseRenderedTexture:(GLuint)
name
forCGLContext:(CGLContextObj)cgl_ctx
Параметры
name
Имя ранее связанной текстуры.
cgl_ctx
Контекст CGL.
Обсуждение
Ваш код OpenGL должен сохранить и восстановить все состояния за исключением тех, которые являются частью
GL_CURRENT_BIT
(позиция вершины, цвет, текстура, и т.д.). Также используйте макросы CGL вместо того, чтобы изменить текущий контекст включением этого оператора:#import <OpenGL/CGLMacro.h>
Для получения дополнительной информации посмотрите Кварцевого Композитора Пользовательское Руководство по программированию Патча.
Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
imageBounds () - imageBounds
ТребуемыйВозвращает границы изображения, выраженного в пикселях и выровненного к целочисленным границам. (требуемый)
Возвращаемое значение
Границы изображения. Обратите внимание на то, что
QCPlugIn
класс не поддерживает изображения, имеющие бесконечные границы.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
imageColorSpace () - imageColorSpace
ТребуемыйВозвращает цветовое пространство изображения или
NULL
если изображение не должно быть соответствующим цветом. (требуемый)Объявление
Swift
func imageColorSpace() -> Unmanaged<CGColorSpace>!
Objective C
- (CGColorSpaceRef)imageColorSpace
Возвращаемое значение
Цветовое пространство изображения или
NULL
.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
shouldColorMatch () - shouldColorMatch
ТребуемыйВозвраты, должно ли изображение быть соответствующим цветом. (требуемый)
Объявление
Swift
optional func shouldColorMatch() -> Bool
Objective C
- (BOOL)shouldColorMatch
Возвращаемое значение
NO
false
если изображение является маской или градиентом; иначеYES
true
, который является значением по умолчанию.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает список форматов пикселя, поддерживающихся для рендеринга к буферу памяти. (требуемый)
Объявление
Swift
optional func supportedBufferPixelFormats() -> [AnyObject]!
Objective C
- (NSArray *)supportedBufferPixelFormats
Возвращаемое значение
Список форматов пикселя, в порядке предпочтения, что изображение может быть представлено к в памяти, или
nil
если провайдер изображения не поддерживает рендеринг к CPU.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвращает список форматов пикселя, поддерживающихся для рендеринга к экранному контексту OpenGL. (требуемый)
Объявление
Swift
optional func supportedRenderedTexturePixelFormats() -> [AnyObject]!
Objective C
- (NSArray *)supportedRenderedTexturePixelFormats
Возвращаемое значение
Возвращает список форматов пикселя текстуры, поддерживаемых
copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped:
илиnil
если не поддерживаемый.Обсуждение
Если этот ноль возвратов метода, то Кварцевый Композитор вызывает
canRenderWithCGLContext:
/renderWithCGLContext:forBounds:
.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвраты, могут ли данные изображения быть представлены в предоставленном контексте CGL. (требуемый)
Объявление
Swift
optional func canRenderWithCGLContext(_
ctx
: CGLContextObj) -> BoolObjective C
- (BOOL)canRenderWithCGLContext:(CGLContextObj)
ctx
Параметры
ctx
Контекст CGL, к которому будет представлено Ваше изображение.
Возвращаемое значение
YES
true
если изображение может быть представлено в этом контексте CGL; иначеNO
false
, когдаrenderToBuffer:withBytesPerRow:pixelFormat:forBounds:
вызывается.Обсуждение
Если Ваше изображение может представить использование какого-либо контекста OpenGL, просто возвратитесь
YES
true
. Если Ваш код потребует специальных расширений, то необходимо будет проверить на них и затем обеспечить надлежащее возвращаемое значение. Для получения дополнительной информации о проверке возможности OpenGL, поддерживаемые аппаратными средствами, см. Руководство по программированию OpenGL для Mac.Оператор импорта
Objective C
@import Quartz;
Swift
import Quartz
Доступность
Доступный в OS X v10.5 и позже.