可能重复:
Why is glReadPixels() failing in this code in iOS 6.0?
我目前在Appstore中有一个使用Cocos2D框架的App。对于碰撞检测,我使用的是glReadPixels。屏幕仅具有白色和黑色像素,并且检测黑色像素意味着碰撞。一切都运行良好,直到iOS 5.1.1,但在iOS6 Beta(所有这些)glReadPixels停止工作。现在glReadPixels返回的RGB值始终为0,0,0。
有没有人知道出了什么问题或如何解决这个问题?
非常感谢您的帮助!
答案 0 :(得分:7)
在EAGLView.m上更改此项为我运行!
- (id)initWithCoder:(NSCoder*)coder {
self = [super initWithCoder:coder];
if (self) {
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
eaglLayer.opaque = TRUE;
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
kEAGLDrawablePropertyRetainedBacking,
kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat,
nil];
// YES
self.contentScaleFactor = [UIScreen mainScreen].scale;
}
return self;
}
答案 1 :(得分:4)
感谢Apple私人列表建议 - 这就是我找到解决该问题的方法。
在Cocos2D类“EAGLView.m”中,我在init方法中将“preserveBackbuffer”变量设置为“YES”。它现在又在iOS 6 Beta中再次运行。