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


綜述

在使用OpenGL函數加載紋理到圖形時,經常遇到紋理上下顛倒的問題。原因是因為OpenGL要求紋理坐標原點在圖片最下面,如圖: 
tex_coord 

而圖片信息中的原點一般都在最上方,一行行記錄下來的,就會導致整個圖片上下顛倒了。 
如圖: 

 

從這個思路觸發共有三種辦法解決問題:

一.翻轉頂點信息中的紋理坐標

原始頂點如圖: 

 

origin_verticles 
因為紋理坐標的范圍是0-1,所以翻轉的話都統一用1去減 


right_y_verticles

得到正確的圖片: 

 

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

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


right_y_shader

三.翻轉頂點

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


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

這篇總結,參考了一個很好的OPENGL學習網站 
https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/, 
大力推薦

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM