OpenGL 紋理貼圖


  紋理貼圖允許把一幅磚牆圖像映射到一個多邊形的表面上,並把正面牆畫成單個多邊形。紋理貼圖能夠保證當這個多邊形變形或渲染時,映射到多邊形表面的圖像也能夠表現出正確的行為。
  紋理貼圖是一個相當大的主題,並且具有相當程度的復雜性。在使用紋理貼圖時,必須做出一些編程選擇。初學者很可能會本能地把紋理理解成二維圖像,但是紋理也可以是一維的,甚至是三維的。可以把紋理映射到一組多邊形構成的表面上,也可以把它貼到曲面上,還可以在一個、二個或三個方向上(取決於紋理的緯度)重復應用同一個紋理來覆蓋整個表面。另外,可以把紋理圖像自動映射到物體上,用它表示被觀察物體的輪廓線或者其他屬性。有光澤的物體也可以進行紋理貼圖,當它們位於房間或其他環境的中央時,它們的表面就可以反射周圍的物體。最后,紋理也可以按不同的方式應用到物體的表面。它可以直接畫到物體的表面(就像表面上的貼花一樣),調整表面的顏色。或者,把紋理顏色與表面顏色進行混合。
  簡單地說,紋理就是矩形的數據數組。例如,顏色數據、亮度數據、顏色和alpha數據。紋理數組中的單個值常常稱為紋理單元(texel)。紋理貼圖之所以復雜,是因為矩形的紋理可以映射到非矩形的區域,並且必須以合理的方式實現。
  如果多個紋理單元對應於一個片段,這些紋理單元就會在求得均值后再應用到這個片段上。如果紋理單元的邊界位於片斷的邊界上,OpenGL就會對所有相關的紋理單元求加權平均值。由於存在這些計算,紋理貼圖從計算的角度而言是比較昂貴的,這也是為什么有這么多的專用圖像系統(包括硬件)對紋理貼圖提供支持的原因。 

  想提出個問題,紋理看着和位圖或圖像很像,那他們的有什么不同?
  一般情況下,紋理是從圖像文件讀取的,這是因為如果直接在程序中指定紋理,可能需要幾百行的額外代碼。 

  紋理貼圖的步驟
  1.創建紋理對象,並為它指定一個紋理。
  2.確定紋理如何應用到每個像素上。
  3.啟用紋理貼圖功能。
  4.繪制場景,提供紋理坐標和幾何圖形坐標。
  紋理坐標必須在RGBA模式下才能使用。在顏色索引模式下使用紋理貼圖的結果是難以預料的。 

  重要概念:分配紋理坐標
  當我們繪制進行了紋理貼圖的場景時,必須為每個頂點提供物體坐標和紋理坐標。經過變換后,物體坐標決定了應該在屏幕上的哪個地點渲染每個特定的頂點。紋理坐標決定了紋理圖像中的哪個紋理單元將分配給這個頂點。

write by fgd


免責聲明!

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



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