2011-09-01 71 views
0

我想使用OpenGL繪製視圖,這是另一個視圖的子視圖。我爲此創建了一個視圖類,如果我在簡單的測試應用程序中使用這個類,它就可以正常工作。但是,如果我在該應用的特定頁面上放置此類的實例,則OpenGL繪畫不會顯示任何內容。我確信該視圖是可見的(我可以設置背景顏色,並顯示該視圖,並且我可以接收觸摸事件)。我也可以通過OpenGL初始化和繪製例程來追蹤,並且一切看起來都很好。我的paint例程被調用,並且經常調用glGetError,並且不返回任何錯誤。我可以比較例行程序和案例的運作情況,而且一切看起來都差不多,但沒有任何繪畫(我甚至只是嘗試着什麼都不做,只是把窗口清理成黑色,但是也沒有任何效果)。OpenGL iOS視圖不繪製

無法運行的應用程序的代碼很複雜,無法在此處發佈。我認爲我做錯了什麼,但對於我的生活,我無法弄清楚什麼。任何人都可以給我任何想法,說明爲什麼OpenGL繪畫看起來會成功並且沒有繪製任何東西,或者提出一個解決這個問題的策略?

謝謝。

回答

0

OpenGL和外部世界之間的鏈接是平臺特定的,而不是核心API的一部分。所以有一個問題不會影響glGetError的結果。

在iOS的情況下,相關調用爲EAGLContext -presentRenderbuffer:,如果您已使用renderbufferStorage:fromDrawable:CAEAGLLayer創建渲染緩衝區的存儲,則該工作將起作用。您可能想要檢查presentRenderbuffer:的返回結果以及圍繞該結果的代碼,以查找錯誤而不是內部GL狀態。

+0

謝謝你看看它。我使用renderbufferStorage:fromDrawable來創建存儲,並且對presentRenderbuffer的調用返回'YES'。正如我所說,這個確切的類在其他地方起作用,所以我在這個引起問題的特定視圖上做了些什麼,但我無法理解它是什麼。 –

+0

在這種情況下,您有可能使用了一個UIView子類,它隱式地爲每個視圖創建一個全新的EAGLContext,然後一直沒有注意到您正在創建資源的上下文?如果他們不在共享組中,則資源不可移植。 – Tommy

+0

我遇到過類似的問題。 git hub的SignatureView庫在演示項目中使用,但不適用於我的演示項目。最後,我發現在行顯示之前,我必須將glColor4f設置爲某種不透明的顏色。演示項目沒有設置這種顏色。 – Cymric