4

重複の可能性:
iOS 6.0 のこのコードで glReadPixels() が失敗するのはなぜですか?

現在、Cocos2D フレームワークを使用するアプリを Appstore に持っています。衝突検出には、glReadPixels を使用しています。画面には白と黒のピクセルしかなく、黒のピクセルを検出すると衝突を意味します。iOS 5.1.1 まではすべて正常に動作していましたが、iOS6 ベータ版 (それらすべて) では 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 に答える