2012-08-23 32 views
4

可能重复:
Why is glReadPixels() failing in this code in iOS 6.0?glReadPixel停止了与iOS6的测试版的工作

我现在有一个使用cocos2d的框架的应用程序在苹果商店。对于碰撞检测,我使用glReadPixels。屏幕只有白色和黑色像素,检测黑色像素意味着碰撞。一切工作正常的iOS 5.1.1,但在iOS6 Beta(所有这些)glReadPixels停止工作。现在glReadPixels返回的RGB值总是0,0,0。

有没有人有一个想法出了什么问题或如何解决?

非常感谢您的帮助!

+0

等待下一个测试版本或GM。 – BoltClock

+0

在苹果私人列表上询问这个问题,你可能会得到答案。任何给你答复的人都会违反与苹果公司的保密协议。 –

+1

为什么SO用户如此痴迷执行苹果的NDA?让苹果担心它...... – eodabash

回答

4

感谢您的Apple私人列表建议 - 这是我找到解决方案的地方。

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

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; 
} 
+0

我遇到了与iOS 6.0完整版本相同的问题。设置保留的支持为true修复它 –

+0

我有glReadPixels在Unity3d(iOS)中不起作用的问题,我通过在GlesHelper.mm中将保留的支持属性(如答案中所示)设置为true来解决此问题。谢谢,这直到我找到答案为止。 –