Ipad GLGetRenderBufferParameterives上的非零大小错误

Ipad GLGetRenderBufferParameterives上的非零大小错误,ipad,ios5,opengl-es,framebuffer,layoutsubviews,Ipad,Ios5,Opengl Es,Framebuffer,Layoutsubviews,这类似于stackoverflow上的另一个问题,但是那里的大小是0,0,这里我得到了错误的奇怪的非零大小。因此,这可能是一个不同的问题 在LayoutSubView中配置帧缓冲区时会出现此问题 glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth); glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES,

这类似于stackoverflow上的另一个问题,但是那里的大小是
0,0
,这里我得到了错误的奇怪的非零大小。因此,这可能是一个不同的问题

在LayoutSubView中配置帧缓冲区时会出现此问题

glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
当这个调用返回时,我得到的大小是
1139
backingHeight
)x
841
backingWidth

这些尺寸看起来很奇怪,因为它们与我所知道的任何标准尺寸都不对应

ipad面向纵向模式。堆栈以
布局子视图开始。我阅读了前面的几个线程,并决定将调用推迟到稍后
layoutSubviews
可能已完成视图的稳定化时。但是,即使我将帧缓冲区创建延迟到显示链接回调,这些值也没有改善,仍然是
1139
(h)x
841
(w)

另外,如果我在调试器的UIScreen
mainScreen
上检查边界大小,我会得到1024x768

(lldb) print ((CGRect)[[ UIScreen mainScreen ] bounds ]).size.height
(CGFloat) $0 = 1024
(lldb) print ((CGRect)[[ UIScreen mainScreen ] bounds ]).size.width
(CGFloat) $1 = 768
因此,不知何故,这些边界似乎没有向前推进到OpenGL图层的
backingWidth
backingHeight
。帧缓冲区仍然会被创建,但我的内容基于错误的(更大的)大小,并离开屏幕


我在xcode 4.5.2上,ipad在iOS 5.1.1上。我将继续追踪这一点,但没有太多的依据。

因此,我做了更多的研究,并认为如果frame.layer的大小不正确,那么我猜这可能不是frame和opengl之间的大小转移问题

问题出在xib文件中

我打开xib,走到窗口,查看并打开尺寸检查器。由于尺寸错误,因此鼠标可能无意中在xib中拖动了视图。这是一个微不足道的错误,但这就是问题的根源——我纠正了xib,现在它工作正常。这花了几个多小时来诊断实际上是一个简单的修复,但我一直在诊断代码,而不是xib。窗口在xib(1024768)中具有正确的大小,并且它是灰色的,因此xcode不允许您修改它,但是可以修改视图大小,并且视图的大小被错误地调整为大于窗口。因此,我手动将视图大小与窗口大小匹配


多亏了那些试图解决这个问题的人。

更多的附加数据,layer.frame还带有不正确的尺寸(lldb)print self.layer.frame(CGRect)$3=origin=(x=0,y=20)size=(width=841,height=1139)