1

OpenGLプロジェクトをiPhoneRetinaディスプレイに正しくレンダリングしようとしていますが、問題が発生しているようです。コンテンツの倍率をデバイスに設定しましたが、フレームバッファの作成に失敗しました。

これはすべて、createFramebufferメソッド内のEAGLViewのサブクラスで実行されます。

これが私の設定です:

glGenFramebuffersOES(1、&viewFramebuffer); glGenRenderbuffersOES(1、&viewRenderbuffer);

glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);

self.contentScaleFactor = [[UIScreen mainScreen] scale];
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);


glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);//Depth
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);


glEnable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);



NSLog(@"scale Factor: %f",self.contentScaleFactor);

倍率は正しく報告されますが、表示はレンダリングされず、バッファーの作成に失敗します。ここで何かが足りませんか?

4

1 に答える 1

0

私は同じ問題に遭遇しました。この回答で述べたように、フレームサイズに画面スケールを掛けるだけです。

于 2013-10-04T14:05:52.847 に答える