glReadPixel stopped working with iOS6 Beta [duplic

2019-04-09 10:10发布

Possible Duplicate:
Why is glReadPixels() failing in this code in iOS 6.0?

I currently have an App in Appstore that uses the Cocos2D framework. For collision detection I am using glReadPixels. The screen only has white and black pixels and detecting a black pixel means collision. Everything works fine up to iOS 5.1.1 but in iOS6 Beta (all of them) glReadPixels stopped working. Now the RGB values returned by glReadPixels are always 0,0,0.

Does anyone have an idea what went wrong or how to fix that?

Your help is much appreciated!

2条回答
走好不送
2楼-- · 2019-04-09 10:49

Thanks for the apple private list suggestion - that's where I found the solution to that problem.

In the Cocos2D Class "EAGLView.m" I was setting the "preserveBackbuffer" variable to "YES" at the init method. It now works again also in iOS 6 Beta.

查看更多
一纸荒年 Trace。
3楼-- · 2019-04-09 10:56

Changing this on EAGLView.m runs for me!

- (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;
}
查看更多
登录 后发表回答