1

EAGLViewクラスを使用するように設定された空のビューでiPhone/ipadアプリを使用しています。フレームバッファを次のように初期化します。

self.contentScaleFactor = [[UIScreen mainScreen] scale];
self.layer.contentsScale = [[UIScreen mainScreen] scale]; //this is 1.0
glGenFramebuffersOES(1, &defaultFramebuffer);
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
    glGenRenderbuffersOES(1, &colorRenderbuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];

    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &framebufferWidth);
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &framebufferHeight);

その後、framebufferWidthは1568、framebufferHeightは1216です。私のデバイスは[[UIDevicecurrentDevice]モデル]によって@"ipad"、iOS4.3.5として報告されます。Xcode 4.5.1、SDK 6、展開ターゲット4.3。

1024x768ではなく、なぜこのサイズを入手したのか、誰かが知っていますか?

ありがとう。

後で編集:同じコードが、展開ターゲット4.0のXcode3.xおよびSDK4.3で完全に機能しました。

4

2 に答える 2

1

1568x1216は、のサイズである必要がありますEAGLView— NIBからロードするのか、プログラムで作成するのか。前者を想定すると、そこにはどのようなサイズがあり、スプリングとストラットはどのように設定されていますか?ビューのフレームをログに記録すると、それらの数値が表示されるよりも賭けます。

iOS 5以降では、おそらくGLKView自分でロールするのではなく、単に使用する必要があります。4.3の展開はまだあなたにとって重要ですか?

于 2012-10-30T05:40:16.953 に答える
1

私が見つけた解決策の1つは、EAGLViewオブジェクトのlayoutSubviewsにコードを配置することです。

- (void)layoutSubviews

{//フレームバッファは、次のsetFramebufferメソッド呼び出しの開始時に再作成されます。[自己deleteFramebuffer];

CGRect  rect = [[UIScreen mainScreen] bounds];
self.layer.frame = rect;
self.frame = rect;

}

これで正しく動作しますが、呼び出し中に1つのopenGLエラー1282が発生します。

glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, framebufferWidth, framebufferHeight);

私はまだこのエラーを調査しています、何かアイデアはありますか?ありがとう、

于 2012-10-31T23:30:02.953 に答える