你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> OpenGL ES 在 iOS 平台紋理貼圖倒置的問題研究

OpenGL ES 在 iOS 平台紋理貼圖倒置的問題研究

編輯:IOS開發綜合

(一大疑惑,為什麼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減,取補,是否可以變換過來呢?

實際測試好像是不行,不過我是直接在著色器中對其進行處理的,看來並不能達到預期目的,還得想想,怎麼能實施這一測試方案。



  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved