我知道在每次調用glVertex之前,必須先執行以下任一操作:glTexCoord(0,0); glTexCoord(0,1); glTexCoord(1,1); glTexCoord(1,0); 但是我不知道它們是什么意思。但是,我知道,如果我將右側(或除以?)乘以2(或除以?),則我的紋理會擴展;如果相反,我的紋理會重復兩次。我設法通過應用操作來編碼紋理集,直到它起作用為止。但是我對發生的事情有正確的認識。為什么將它們分開會影響圖像,為什么將它們反轉會鏡像呢?紋理坐標如何工作?
3 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
OpenGL使用逆紋理。它需要從世界空間(X,Y,Z)到紋理空間(X,Y)到離散空間(U,V)的坐標,其中離散空間位于[0,1]域中。
采取一個多邊形,將其視為一張紙。有了這個:
glTexCoord(0,0);
glTexCoord(0,1);
glTexCoord(1,1);
glTexCoord(1,0);
您告訴OpenGL在整張紙上繪圖。應用修改時,紋理空間將相應地修改為給定坐標。例如,這就是為什么當您將相同的紋理劃分兩次時,您告訴OpenGL映射一半的圖紙,而不是整個圖紙。

蠱毒傳說
TA貢獻1895條經驗 獲得超3個贊
對于2D圖像紋理,紋理坐標中的0,0對應于圖像的左下角,而紋理坐標中的1,1對應于圖像的右上角。請注意,“圖像的左下角”不在左下像素的中心,而是在像素的邊緣。
上傳圖片時也很有趣:
8.5.3紋理圖像結構
紋理圖像本身(由數據引用)是一組值的序列。第一組是紋理圖像的左下角。隨后的組從左到右填寫寬度width的行;高度行從底部到頂部堆疊,形成一個二維圖像切片;和深度切片從后到前堆疊。
請注意,大多數圖像格式的數據都從頂部開始,而不是從底部開始。
- 3 回答
- 0 關注
- 1200 瀏覽
添加回答
舉報
0/150
提交
取消