日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

纹理贴图相关知识

發(fā)布時(shí)間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 纹理贴图相关知识 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文:https://blog.csdn.net/hudfang/article/details/50311523

1.紋理貼圖之所以復(fù)雜是因?yàn)榫匦蔚募y理數(shù)據(jù)需要被合理地映射到非矩形的區(qū)域上面,紋理就是數(shù)據(jù)的數(shù)組,例如顏色數(shù)據(jù)亮度數(shù)據(jù)alpha數(shù)據(jù)等,紋理的單個(gè)數(shù)據(jù)值 被叫做紋理元素 英文叫做texual,初學(xué)者會(huì)本能地把紋理當(dāng)成二維圖像,但是紋理也可以是一維和三維的數(shù)據(jù)。

2.紋理貼圖的特點(diǎn):在不進(jìn)行紋理貼圖時(shí),每個(gè)圖元的繪制或者使用一種顏色單調(diào)著色或者根據(jù)每個(gè)頂點(diǎn)的顏色插值著色。而紋理貼圖則是允許把一副圖像映射到指定的多邊形表面上,紋理貼圖能夠保證當(dāng)這個(gè)多邊形進(jìn)行變換或渲染時(shí),映射到多邊形上的圖像也能夠正確,改變相機(jī)的位置 紋理細(xì)節(jié)也會(huì)跟著變大變小,但實(shí)際上紋理圖像的大小是沒(méi)有變化的。紋理貼圖也被稱為是紋理映射,我們可以把紋理映射到由一組多邊形構(gòu)成的表面上,也可以映射到曲面上。


3.紋理坐標(biāo)

紋理映射時(shí)需要知道紋理的每個(gè)textual與渲染的3D物體的表面是如何對(duì)應(yīng)的,這個(gè)映射的范圍是由紋理坐標(biāo)來(lái)指定,紋理坐標(biāo)可以是一維二維和三維,與紋理本身的維度相關(guān),如果使用一個(gè)二維的紋理圖像,那么紋理坐標(biāo)就是二維。紋理坐標(biāo)需要從兩個(gè)方面來(lái)理解,一個(gè)是基于紋理空間的坐標(biāo),這個(gè)坐標(biāo)表示的是每一個(gè)紋理,這個(gè)坐標(biāo)表示的是每一個(gè)紋理像素在紋理中的位置,這個(gè)位置可以被認(rèn)為是一個(gè)列和一個(gè)行的值,它們分別由U和V來(lái)表示;另外一個(gè)坐標(biāo)是3D物體的某個(gè)頂點(diǎn)與紋理的對(duì)應(yīng)關(guān)系,這個(gè)坐標(biāo)需要在輸入頂點(diǎn)數(shù)據(jù)時(shí)指定,這個(gè)坐標(biāo)不是使用紋理空間中的坐標(biāo)值,而是一個(gè)從0.0~1.0的實(shí)數(shù)坐標(biāo),分別用S和T來(lái)表示,無(wú)論紋理本身寬高是多少,S和T的取值始終是在0.0到1.0之間。在pixel shader中執(zhí)行紋理貼圖時(shí),會(huì)使用頂點(diǎn)插值后得到的s、t坐標(biāo),與紋理寬高來(lái)計(jì)算紋理空間中的具體UV坐標(biāo),最后根據(jù)UV坐標(biāo)來(lái)抓取pixel


4.紋理貼圖過(guò)程

我們可以看到下圖表示一個(gè)紋理坐標(biāo)和多邊形表面的映射,我們要給圖中左邊的像素確定一個(gè)顏色,那么像素四個(gè)角的位置被映射到了對(duì)象空間中的圖元上,這時(shí)像素的形狀會(huì)有一些變形,這是由圖元的形狀和觀察的角度所照成的,與像素角相對(duì)應(yīng)的圖元上的四個(gè)角被映射到紋理空間中,這個(gè)映射的過(guò)程就是紋理坐標(biāo)s、t轉(zhuǎn)換到紋理空間里面的u、v坐標(biāo)的過(guò)程,這一映射過(guò)程再次使像素的形狀產(chǎn)生變形,像素最終的顏色值就由該像素最終映射到的區(qū)域的紋理像素計(jì)算而得到。


5.紋理level

紋理的level與紋理的過(guò)濾相關(guān)。由前面的介紹知道,紋理的大小與實(shí)際需要貼圖的多邊形的大小是無(wú)法匹配的,如果多邊形小于紋理的分辨率,那么需要在貼圖時(shí)對(duì)紋理做縮放,縮放被稱為過(guò)濾,其實(shí)就是用幾個(gè)textural來(lái)混合生成一個(gè)textural提供給多邊形對(duì)應(yīng)的像素使用。如果只指定了頂層的紋理,那么不管多邊形大小是多大,都用這個(gè)頂層紋理來(lái)生成,另外一種方法就是指定不同level的紋理,如下圖所示,原始大小的紋理就是0層,每一層的寬高都是上一層紋理的一半,那么紋理level的層數(shù)是其寬高中最大值以2為底的對(duì)數(shù),例如紋理寬高最大值是64*16,那么紋理level的最大層數(shù)就是8。指定好不同層次的紋理后,就會(huì)根據(jù)多邊形大小來(lái)決定采用哪個(gè)紋理,越小的多邊形就采用越小的紋理,這種提前準(zhǔn)備好各層紋理,在3D物體縮放時(shí),大大減小了紋理失真的現(xiàn)象。


6.紋理target

另外一個(gè)紋理的概念就是紋理的target,在紋理對(duì)象創(chuàng)建時(shí),需要指定紋理的target,它確定了紋理的維數(shù),紋理的target有以下幾種:

(1)GL_TEXTURE_1D

(2)GL_TEXTURE_2D

(3)GL_TEXTURE_3D

(4)GL_TEXTURE_CUBE_MAP

紋理的target的指定是在綁定紋理的時(shí)候去指定的,而不是在生產(chǎn)紋理對(duì)象的時(shí)候去指定的。

7.紋理的格式

紋理通常用來(lái)表示物體表面,一般使用二維的圖像來(lái)表示,因此常用的紋理格式有以下幾種:

(1)GL_ALPHA這個(gè)只是有alpha通道的值,一般用來(lái)做字體的顯示等

(2)GL_LUMINANCE只有亮度值,

(3)GL_LUMINANCE_ALPHA既有亮度顯示又有alpha值

(4)GL_RGB

(5)GL_RGBA

8.紋理像素?cái)?shù)據(jù)類型

指定完紋理像素的格式以后,還需要知道其具體的每個(gè)顏色通道的數(shù)據(jù)類型,由以下幾種類型:

(1)GL_UNSIGNED_BYTE/GL_BYTE

(2)GL_UNSIGNED_SHORT/GL_SHORT

(3)GL_UNSIGNED_INT/GL_INT

(4)GL_FLOAT

(5)GL_UNSIGNED_SHORT_5_6_5:表示紅色通道使用5個(gè)bit來(lái)組成,綠色通道使用6個(gè)bit,藍(lán)色通道使用5個(gè)bit,加起來(lái)正好是16個(gè)bit兩個(gè)字節(jié),是一個(gè)unsigned short

(6)GL_UNSIGNED_SHORT_4_4_4_4:每個(gè)通道都有4個(gè)bit

(7)GL_UNSIGNED_SHORT_5_5_5_1:紅綠藍(lán)是5個(gè)bit,alpha通道是1個(gè)bit


總結(jié)

以上是生活随笔為你收集整理的纹理贴图相关知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。