2

这类似于 stackoverflow 上的另一个问题,但存在大小,0,0在这里我弄错了奇怪的非零大小。所以看起来这可能是一个不同的问题。

当我在 layoutSubviews 中配置帧缓冲区时会出现问题。

glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);

当这个调用返回我得到的尺寸是1139backingHeight)x 841backingWidth)。

这些尺寸看起来很奇怪,因为它们不符合我所知道的任何标准尺寸。

ipad 面向纵向模式。堆栈以layoutSubviews. 我阅读了一些较早的线程并决定将调用推迟到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 EAGLayer 的backingWidthbackingHeight。仍然会创建帧缓冲区,但我的内容基于错误(更大)的大小并离开了屏幕。

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

4

1 回答 1

0

所以,我做了一些更多的研究,发现如果 frame.layer 携带错误的尺寸,那么我猜这可能不是 frame 和 opengl 之间的尺寸转移问题。

问题出在 xib 文件中。

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

感谢任何可能试图弄清楚这一点的人。

于 2012-11-09T21:10:35.070 回答