使用16位浮点纹理保存缓冲区

时间:2014-09-20 22:03:32

标签: ios objective-c opengl-es core-graphics

我找不到与float一起使用的参数组合(我设法用无符号字节保存):

float *rawImagePixels = (float*)malloc(width * height * sizeof(float));
glPixelStorei(GL_PACK_ALIGNMENT, 4);
glReadPixels(0, 0, width, height, GL_RED_EXT, GL_HALF_FLOAT_OES, rawImagePixels);
NSData *data = [NSData dataWithBytes:rawImagePixels length:width*height];
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();
CGImageRef iref = CGImageCreate(width, height, 16, 16, width, colorspace, kCGImageAlphaNone|kCGBitmapByteOrder16Big, provider, NULL, NO, kCGRenderingIntentDefault);
UIImage *myImage = [UIImage imageWithCGImage:iref];
UIImageWriteToSavedPhotosAlbum(myImage, self, nil, nil);

我的纹理是1通道半浮动纹理。如何将其保存为UIImage?

1 个答案:

答案 0 :(得分:0)

从问题中提取

使用此代码我得到了不错的结果:

weak self