I am drawing RGBA
data onto the screen using CGBitmapContextCreate
and CGContextDrawImage
. When I try to create bitmapcontext
using CGBitmapContextCreate
(pixelBuffer
,...) where I have alreadymalloc
'ed pixelBuffer
and placed my data there, this works just fine.
However, I would like Core Graphics to manage its own memory so I would like to pass NULL
to CGBitmapContextCreate
, and then get the pointer to the memory block used by calling CGBitmapContextGetData
, and copying my RGBA
buffer to the aforementioned block using memcpy
. However, my memcpy
fails. Please see my code below.
Any idea what I am doing wrong?
gtx = CGBitmapContextCreate(NULL, screenWidth, screenHeight, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaNoneSkipLast);
void *data = CGBitmapContextGetData(gtx);
memcpy(data, pixelBuffer, area*componentsPerPixel);
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGImageRef image = CGBitmapContextCreateImage(gtx);
CGContextTranslateCTM(currentContext, 0, screenHeight);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextDrawImage(currentContext, currentSubrect, image);