1. 程式人生 > >OpenGL紋理上下顛倒翻轉的三種解決辦法

OpenGL紋理上下顛倒翻轉的三種解決辦法

在使用OpenGL函式載入紋理到圖形時,經常遇到紋理上下顛倒的問題。原因是因為OpenGL要求紋理座標原點在圖片最下面,如圖: 
tex_coord 
而圖片資訊中的原點一般都在最上方,一行行記錄下來的,就會導致整個圖片上下顛倒了。 
如圖: 
nega-y 
從這個思路觸發共有三種辦法解決問題:

一.翻轉頂點資訊中的紋理座標

原始頂點如圖: 
origin_verticles 
因為紋理座標的範圍是0-1,所以翻轉的話都統一用1去減 
right_y_verticles

得到正確的圖片: 
right_y

二.翻轉頂點Shader中的紋理座標

基於方法一,更聰明的辦法就是直接在Shader中翻轉紋理Y軸座標 
right_y_shader

三.翻轉頂點

上面都是直接針對問題的解決辦法,反其道而行之,我們也可以直接翻轉頂點,這樣紋理就正了: 
right_vec

 
在翻轉頂點時,就不是直接對Y值用1去減,因為頂點的取值範圍是-1 - 1 ,所以我們直接加上負號做翻轉即可