我工作的一個iPhone OS的應用程序,其主要觀點是OpenGL的2D視圖(這是蘋果EAGLView類的子類,基本上建立一個鄰投射二維環境),用戶直接交互。在iPhone上使用OpenGL的分層2D應用最有效的「體系結構」?
有時候(未在任何時候)我想使這個基線GL基礎上增加一些控制view--認爲像擡頭顯示。請注意,下面的基準視圖可能是滾動/動畫,而控件應該似乎固定在上面的屏幕上。我非常喜歡Cocoa視圖,而且我對CoreGraphics很滿意,但是我對Open GL表示很滿意,而且EAGLView的操作(以及它與CALayers的關係)對我來說是相當不透明的。我不知道如何最有效地混合其他元素(閱讀:最佳性能,最少麻煩等)。我知道,在一個小問題中,我可以創建並保留所有其他控件的幾何圖形,並在每次繪製/交換時將它們渲染到基線幾何圖形的頂部,從而只保留用戶在單個視圖中看到的所有內容。但我不太確定其他技術,比如在頂部有另一個視圖(UIKit/CG或GL?)或以某種方式在我的單視圖中創建其他圖層等。
如果人們會如此友善地寫出來一些簡短的觀察,如果他們以前走過這些道路,或至少指向我的文件或關於這個問題的現有討論,我將不勝感激。
謝謝。
感謝您的回答,Pod。我猜你在說什麼是「不要在GL視圖的頂部繪製控件或CoreGraphics的任何東西」。以下是後續步驟:當我渲染到另一個(而不是屏幕)表面時,我如何在主表面頂部進行拍攝? – 2010-01-13 06:12:23
我很久沒有使用OGL了,但我很簡單(如果不是''的方式),只是繪製一個與目標表面大小相同的四邊形,並將預渲染的東西用作紋理。如果它們尺寸不同,這也會爲您調整。如果他們是1:1,那麼它基本上是一個老式的blit。使用阿爾法混合等來獲得期望的結果時,繪製HUD(所以你不要只使用HUD白色屏幕,等:)) – Pod 2010-01-13 10:57:03
另外,當做一個預渲染的四個「blit」到你的屏幕上,可能最容易使用「直通」VS.我認爲OGL有一個功能可以爲你做到這一點,但如果沒有,只需製作GLSL着色器,而不是簡單地傳遞xyzw和uvst而不改變它們,並使用座標(1,0,0,0),(0,0 ,0,0),(1,1,0,0)等四個角落。您可能需要使用z來使其顯示已經在該渲染目標上的像素的「infront」。 – Pod 2010-01-13 11:23:11