Advertise here




Advertise here

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

grab an image from OpenGL ES context

specktrospecktro Posts: 4New Users
I've been working with OpenGL ES to modify an application which allows to capture a user's signature. Now i can draw freehand on the screen but now i need to keep that signature into an image. I found this code which just draws a completely black image, i'm new to OpenGL i hope that somebody can help me...
NSInteger myDataLength = 320 * 480 * 4; 
// allocate array and read pixels into it. 
GLubyte *buffer = (GLubyte *) malloc(myDataLength); 
glReadPixels(0, 0, 320, 480, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
	
// gl renders "upside down" so swap top to bottom into new array. 
// there's gotta be a better way, but this works. 
GLubyte *buffer2 = (GLubyte *) malloc(myDataLength);

for(int y = 0; y < 480; y++) 
{ 
	for(int x = 0; x  <320 * 4; x++) { 
		buffer2[(479 - y) * 320 * 4 + x] = buffer[y * 4 * 320 + x];
	} 
} 
// make data provider with data. 
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL); 
// prep the ingredients 
int bitsPerComponent = 8; 
int bitsPerPixel = 32; 
int bytesPerRow = 4 * 320; 
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; 
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; 
// make the cgimage 
CGImageRef imageRef = CGImageCreate(320, 480, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); 
// then make the uiimage from that 
UIImage *myImage = [UIImage imageWithCGImage:imageRef]; 
UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);

:confused:
Post edited by specktro on

Replies

Sign In or Register to comment.