OpenGL的glTexCoord2f紋理坐標配置


紋理坐標配置函數,先看定義:

void glTexCoord2f (GLfloat s, GLfloat t);

 

1、glTexCoord2f()函數

有兩個參數:GLfloat s, GLfloat t

第一個參數代表X坐標。 0.0f 是紋理的左側。 0.5f 是紋理的中點, 1.0f 是紋理的右側。

第二個參數代表Y坐標。 0.0f 是紋理的底部。 0.5f 是紋理的中點, 1.0f 是紋理的頂部。

 

一個完全紋理的四個頂點的坐標分別是(0.0f, 0.0f)、(0.0f, 1.0f)、(1.0f, 1.0f)、(1.0f, 0.0f),分別對應左下、左上、右上、右下角。

可以這么認為,紋理一個挨着一個粘在坐標軸上,顯示多個、顯示那部分完全由四個頂點坐標決定。

比如顯示3行2列個位圖(共6個),坐標可以這樣:(0.0f, 0.0f)、(0.0f, 3.0f)、(2.0f, 3.0f)、(2.0f, 0.0f)。

該函數主要與glVertex3f()配合使用,glTexCoord2f()是配置紋理坐標,glVertex3f()是配置圖形坐標

 

注意:載入的位圖大小必須是M*M,M是2的某次方,如32,64,128等。

 

2、如果貼圖左右或者上下貼反了什么情況?

為了將紋理正確的映射到四邊形上,必須將紋理的右上角映射到四邊形的右上角,紋理的左上角映射到四邊形的左上角,紋理的右下角映射到四邊形的右下角,紋理的左下角映射到四邊形的左下角。如果映射錯誤的話,圖像顯示時可能上下顛倒,側向一邊或者什么都不是。

 

紋理的左上坐標是X:0.0,Y:1.0f,四邊形的左上頂點是X:-1.0,Y:1.0。其余三點依此類推。下面是一個具體的例子。
glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, -1.0, 1.0 );
glTexCoord2f( 1.0, 0.0 ); glVertex3f( 1.0, -1.0, 1.0 );
glTexCoord2f( 1.0, 1.0 ); glVertex3f( 1.0, 1.0, 1.0 );
glTexCoord2f( 0.0, 1.0 ); glVertex3f( -1.0, 1.0, 1.0 );

 

最后附上一些博主寫的關於紋理映射的文章:

OpenGL紋理映射總結

OpenGL超級寶典筆記——紋理映射

 


免責聲明!

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



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