(一大疑惑,為什麼android上關於OpenGL ES 開發的資料很多,確涉及該主題關鍵字的搜索結果了了無幾呢?!不會是關鍵字不對吧......)
初步分析,
一是有可能是沒倒,可能我搞錯了三維中的正立方向;
二是確實倒了,可能由於 QuarzCore 庫在 iOS 的UIKit空間中繪制本身存在的倒置問題導致;
QuarzCore 庫在 iOS 的UIKit空間中繪制本身存在的倒置問題,其解決有兩種方案:
1、將圖片先在臨時繪制上下文中翻轉繪制,然後再用 QuarzCore 按正常來繪制,這樣把一個倒著的圖象倒著畫,一定會是正著的了,所謂的正倒是指內容;
2、在用 QuarzCore 繪制之前,先把當前上下文倒過來,再繪制,在倒著的畫板上,倒著畫,畫出來的一定是正的,這樣正著看就沒問題了,但是否需要把上下文再正過來,需要進一步測試;
以上問題,究其根結,是因為在屏幕繪圖空間中,就相當於一張畫板,UIKit 和 QuarzCore 所選取的 y 軸的原點和方向不同導致的,前者坐標原點在左上角,y 軸正方向從上向下;而 QuarzCore 坐標原點選在左下角,y 軸正方向從下向上;
雖然分析的挺明白,實際試了近一天,各種情況和方法都試了,還是無法在 OpenGL 中正著把圖片貼上去。
繼續分析,
一是有可能某個細節部位導致,這時真的需要休息一下,否則就是白耽誤工夫,人家講,一個人藏的東西,十個人都找不到,更何況自已藏忘了的呢?@!:)
二是,還有一個關鍵問題,如果是將渲染緩沖區中圖像呈現到視圖中時出現的問題,那麼幾何體應該也是倒著的,但幾何體是正著的,說明不是這個問題,而是OpenGL ES往幾何體面上貼圖時出現的問題。
償試將紋理貼圖倒過來再用,沒有達到預期效果。
由於是OpenGL ES內部往上貼圖的時侯,貼反了,這個暫時還不知如何去處理,也許通過紋理坐標的變換能解決,但如何變換還不知道。
那麼先用Photoshop把圖片倒過來,這樣一來,OpenGL ES內部往上貼圖倒著貼倒立的圖片,顯示出來就是正的了。
後又想到,紋理坐標最大為1,那麼想掉過來的話,那就把 y 坐標用1減,取補,是否可以變換過來呢?
實際測試好像是不行,不過我是直接在著色器中對其進行處理的,看來並不能達到預期目的,還得想想,怎麼能實施這一測試方案。