に取り組んでいます... は/ iphone上で正常に動作していますipadシミュレータとiphoneデバイスではなく、iPad上でのみ。 スクリーンショットコード、私はこの奇妙な問題を抱えていますiphone
間違っていただきましたすべてのアイデアを iphoneデバイスは、iOSのバージョン3.1.1を持っているとiPadは、iOS 4.2である...
- (UIImage *)screenshotImage {
CGRect screenBounds = [[UIScreen mainScreen] bounds];
int backingWidth = screenBounds.size.width;
int backingHeight =screenBounds.size.height;
NSInteger myDataLength = backingWidth * backingHeight * 4;
GLuint *buffer = (GLuint *) malloc(myDataLength);
glReadPixels(0, 0, backingWidth, backingHeight, GL_RGBA4, GL_UNSIGNED_BYTE, buffer);
for(int y = 0; y < backingHeight/2; y++) {
for(int xt = 0; xt < backingWidth; xt++) {
GLuint top = buffer[y * backingWidth + xt];
GLuint bottom = buffer[(backingHeight - 1 - y) * backingWidth + xt];
buffer[(backingHeight - 1 - y) * backingWidth + xt] = top;
buffer[y * backingWidth + xt] = bottom;
}
}
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, buffer, myDataLength, releaseScreenshotData);
const int bitsPerComponent = 8;
const int bitsPerPixel = 4 * bitsPerComponent;
const int bytesPerRow = 4 * backingWidth;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault;
CGImageRef imageRef = CGImageCreate(backingWidth,backingHeight, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
CGColorSpaceRelease(colorSpaceRef);
CGDataProviderRelease(provider);
UIImage *myImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
// myImage = [self addIconToImage:myImage];
return myImage;}
.. ??
k個のおかげで...今私はGL_RGBAにGL_RGB4を変更していました。問題....私はGL_RGBA8に変更し – Tornado
両方のデバイスに同じコードを使用して、mをいただきましたコードは、ちょうどGL_RGBAは(注意「8」)ではない、任意のアイデアiphoneデバイス上で良いではなく、iPadのデバイス上で実行されています。 – datenwolf
ちょっと私のxcodeは、GL_RGBA8_OESをオプションとして与える代わりに、GL_RGBA8のオプションを与えません。このGL_RGBA8_OESを使用すると、コンパイル時エラーが発生します。 "GL_RGBA8_OESはこのスコープで定義されていません" " – Tornado