Deprecated CIContext Methods

A method identified as deprecated has been superseded and may become unsupported in the future.

Deprecated in OS X v10.6

contextWithCGLContext:pixelFormat:options:

Creates a Core Image context from a CGL context, using the specified options and pixel format object. (Deprecated in OS X v10.6. Instead use contextWithCGLContext:pixelFormat:colorSpace:options:.)

+ (CIContext *)contextWithCGLContext:(CGLContextObj)ctx pixelFormat:(CGLPixelFormatObj)pf options:(NSDictionary *)dict
Parameters
ctx

A CGL context (CGLContextObj object) obtain by calling the CGL function CGLCreateContext.

pf

A CGL pixel format object (CGLPixelFormatObj object) created by calling the CGL function CGLChoosePixelFormat. This argument must be the same pixel format object used to create the CGL context. The pixel format object must be valid for the lifetime of the Core Image context. Don’t release the pixel format object until after you release the Core Image context.

options

A dictionary that contains color space information. You can provide the keys kCIContextOutputColorSpace or kCIContextWorkingColorSpace along with a CGColorSpaceRef object for each color space.

Discussion

After calling this method, Core Image draws content into the surface (drawable object) attached to the CGL context. A CGL context is an OS X OpenGL context. For more information, see OpenGL Programming Guide for Mac.

When you create a CIContext object using a CGL context, all OpenGL states set for the CGL context affect rendering to that context. That means that coordinate and viewport transformations set on the CGL context as well as the vertex color.

For best results, follow these guidelines when you use Core Image to render into an OpenGL context:

  • Ensure that the a single unit in the coordinate space of the OpenGL context represents a single pixel in the output device.

  • The Core Image coordinate space has the origin in the bottom left corner of the screen. You should configure the OpenGL context in the same way.

  • The OpenGL context blending state is respected by Core Image. If the image you want to render contains translucent pixels, it’s best to enable blending using a blend function with the parameters GL_ONE, GL_ONE_MINUS_SRC_ALPHA, as shown in the following code example.

Some typical initialization code for a view with width W and height H is:

    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);
Availability
  • Available in OS X v10.4 and later.
  • Deprecated in OS X v10.6.
Related Sample Code
Declared In
CIContext.h

Deprecated in OS X v10.8

drawImage:atPoint:fromRect:

Renders a region of an image to a point in the context destination. (Deprecated in OS X v10.8. Instead use drawImage:inRect:fromRect:.)

- (void)drawImage:(CIImage *)im atPoint:(CGPoint)p fromRect:(CGRect)src
Parameters
im

A Core Image image object.

p

The point in the context destination to draw to.

src

The region of the image to draw.

Discussion

This method because it is ambiguous as to the units of the dimensions and won’t work as expected in a high-resolution environment which is why you should use drawImage:inRect:fromRect: instead.

On iOS platforms, this method draws the image onto a render buffer for the OpenGL ES context. Use this method only if the CIContext object is created with contextWithEAGLContext:, and hence, you are rendering to a CAEAGLLayer.

Availability
  • Available in OS X v10.4 and later.
  • Deprecated in OS X v10.8.
Declared In
CIContext.h