1
我想获得一个OpenGL项目正确呈现到iPhone视网膜显示,我似乎遇到了一些困难。我已经为设备设置了内容缩放因子,但现在帧缓冲区未能创建。Open GL ES视网膜显示设置
这些都是在EAGLView int的createFramebuffer方法的子类中完成的。
这是我的设置:
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);
比例因子报告正确,但显示不会呈现,并且缓冲区无法创建。我在这里错过了什么吗?
backingWidth和backingHeight在结尾处有什么值?这些视图的像素大小是否正确?你是通过'glCheckFramebufferStatus(GL_FRAMEBUFFER)'还是另一种方式检查framebuffer的状态? – 2012-08-16 20:06:29
检查我得到的值:比例因子:2.000000 backingWidth:640 backingHeight:960。这些是我的显示器的正确尺寸。而glCheckFramebufferStatus(GL_FRAMEBUFFER)不会返回GL_FRAMEBUFFER_COMPLETE_OES。 – jcb344 2012-08-16 20:30:19
@ jcb344我遇到类似的问题,你解决了这个问题吗? – rraallvv 2013-03-24 05:23:43