4

可能重复:
为什么 glReadPixels() 在 iOS 6.0 中的此代码中失败?

我目前在 Appstore 中有一个使用 Cocos2D 框架的应用程序。对于碰撞检测,我使用 glReadPixels。屏幕只有白色和黑色像素,检测到黑色像素意味着碰撞。在 iOS 5.1.1 之前一切正常,但在 iOS6 Beta(全部)中 glReadPixels 停止工作。现在 glReadPixels 返回的 RGB 值始终为 0,0,0。

有谁知道出了什么问题或如何解决?

非常感谢您的帮助!

4

2 回答 2

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;
}
于 2012-10-14T23:51:16.193 回答
4

感谢苹果私人名单的建议——我在那里找到了解决该问题的方法。

在 Cocos2D 类“EAGLView.m”中,我在 init 方法中将“preserveBackbuffer”变量设置为“YES”。它现在也可以在 iOS 6 Beta 中再次使用。

于 2012-08-23T22:50:49.523 回答