2012-11-08 26 views
2

這與另一個在stackoverflow上的問題類似,但是這裏的大小有0,0,這裏我得到了奇怪的非零大小錯誤。所以看起來這可能是一個不同的問題。glGetRenderbufferParameterivOES上的非零大小錯誤

當我在layoutSubviews中配置framebuffer時發生問題。

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

當此調用返回我收到大小1139backingHeight)×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 

所以在某種程度上看來,這些邊界不結轉到backingWidth和OpenGL的EAGLayer的backingHeight。 framebuffer仍然被創建,但我的內容是基於錯誤(較大)的大小,並從屏幕上退出。

我在xcode 4.5.2上,ipad在iOS 5.1.1上。我會繼續跟蹤這一點,但沒有太多可走。

+0

一些多個附加數據,所述layer.frame也攜帶尺寸不正確 (LLDB)打印self.layer.frame (的CGRect)$ 3 =原點=(X = 0,Y = 20)大小=(寬度= 841,身高= 1139) – nishant

回答

0

因此,我做了一些更多的研究,並認爲如果frame.layer的大小錯誤,那麼我猜想它可能不是幀和opengl之間的大小問題的轉移。

問題出在xib文件中。

我拉開xib,去了窗口,=>查看並拉開尺寸檢查器。那裏的大小是錯誤的,所以鼠標可能會無意中拖動xib中的視圖。這是一個微不足道的錯誤,但這是問題的根源 - 我更正了xib,現在它工作正常。這花了幾個小時來診斷實際上是一個簡單的修復,但我一直在診斷代碼而不是xib。該窗口在xib(1024,768)中攜帶正確的大小,並且這是灰色的,所以xcode不會允許您修改該窗口,但可以修改視圖大小並將視圖尺寸錯誤地設置爲大於窗口大小。所以我手動將視圖大小與窗口大小相匹配。

感謝任何可能試圖弄清楚這一點的人。