紋理篇

紋理對齊:

默認(rèn)情況下胸私,OpenGL采用4字節(jié)的對齊方式挫掏,比如:如果一幅RGB圖像,包含3個(gè)分量特纤,若圖像的寬度為199個(gè)像素军俊,那么圖像的每一行占用多少空間呢?

答:如果按照緊密包裝的形式捧存,已知每個(gè)分量占用一個(gè)字節(jié)粪躬,那么所占的內(nèi)存為:199*3 = 597。顯然這樣是錯(cuò)誤的矗蕊,因?yàn)槲覀儾捎玫氖?字節(jié)對齊短蜕,而597不是4的倍數(shù),實(shí)際每一行占用為600字節(jié)傻咖。

如果要改變對齊方式使用glPixelStorei()朋魔。

紋理參數(shù):

注意:當(dāng)紋理加載到內(nèi)存時(shí)紋理已經(jīng)被規(guī)范到0-1

glTexParameteri (GLenum target,GLenum pname,GLint param);

target可以是GL_TEXTURE_1D,GL_TEXTURE_2D卿操,GL_TEXTURE_3D

pname指定了需要設(shè)置的紋理參數(shù)GL_TEXTURE_MAG_FILTER警检,GL_TEXTURE_MIN_FILTER (過濾),GL_TEXTURE_WRAP_S害淤,GL_TEXTURE_WRAP_T (環(huán)繞)

param用于設(shè)置特定的紋理參數(shù)的值

過濾:

紋理和屏幕上的像素從來不會(huì)形成一對一的對應(yīng)關(guān)系扇雕,因此當(dāng)紋理應(yīng)用時(shí)紋理不是被拉伸就是壓縮;根據(jù)一個(gè)拉伸或收縮的紋理貼圖計(jì)算顏色片段的過程稱為紋理過濾 (Texture Filitering).

過濾種類:GL_TEXTURE_MAG_FILTER放大過濾窥摄,GL_TEXTURE_MIN_FILTER縮小過濾

參數(shù)值:GL_NEAREST最鄰近過濾镶奉,是最簡單、最快速的過濾方法崭放,不管紋理坐標(biāo)位于哪個(gè)紋理單元哨苛,這個(gè)紋理單元的顏色就作為這個(gè)片段的紋理顏色,當(dāng)紋理被拉伸時(shí)出現(xiàn)鋸齒狀币砂。GL_LINEAR線形過濾建峭,這個(gè)模式不是把最近的紋理單元應(yīng)用到紋理坐標(biāo)中,而是把這個(gè)紋理周圍的加權(quán)平均值應(yīng)用到這個(gè)紋理坐標(biāo)决摧,類似于模糊效果亿蒸。?

環(huán)繞:

一般情況下我們在0.0到0.1之間指定紋理坐標(biāo)凑兰,但是如果紋理坐標(biāo)在這個(gè)范圍之外時(shí)根據(jù)紋理環(huán)繞模式(Wrapping Mode)處理問題;GL_TEXTURE_WRAP_T边锁,GL_TEXTURE_WRAP_S分別指兩個(gè)方向


原圖


GL_REPEAT


GL_CLAMP_TO_EDGE

GL_CLAMP_TO_EDGE模式下超過0-1范圍的根據(jù)邊緣的紋理顏色來確定顏色


GL_CLAMP_TO_BORDER

GL_CLAMP_TO_BORDER使用由代碼設(shè)置GL_TEXTURE_BORDER_COLOR(設(shè)置邊框顏色為紅色)的顏色

各向異性過濾:

當(dāng)我們垂直看一幅圖片時(shí)這個(gè)過程是完美的姑食,但是我們以一個(gè)角度傾斜觀察這個(gè)圖片時(shí),對周圍紋理進(jìn)行常規(guī)采樣會(huì)導(dǎo)致一些紋理信息的丟失砚蓬,如果我們在進(jìn)行紋理過濾時(shí)考慮到了觀察角度矢门,那么這種過濾方法稱為各向異性過濾。

?GLfloat fLargest;

glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest); ?

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);

Mip貼圖:

當(dāng)紋理被頻繁的放大或者縮小時(shí)一會(huì)造成屏幕閃爍灰蛙,二會(huì)造成性能浪費(fèi)祟剔;所以提前把一組尺寸不同但內(nèi)容相同的圖片載入內(nèi)存,這叫做Mip貼圖摩梧。這組圖片每個(gè)圖片比上個(gè)縮小一倍物延,直到大小為1*1為止,這比不使用mip內(nèi)存消耗多出三分之一

如何使用仅父?

Mop貼圖是通過glTexImage2D()加載每一層圖片直到1*1叛薯,如果不需要到1*1,可以通過glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BASE_LEVEL,0)或者glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAX_LEVEL,0)控制哪些Mip層被加載笙纤。也可以直接使用glGenerateMipmap()系統(tǒng)為我們自動(dòng)生成并加載其余Mip層

紋理壓縮:

紋理貼圖可以增加令人難以置信的逼真效果耗溜,并且在定點(diǎn)處理上所需要付出的代價(jià)非常少。但是它需要大量的內(nèi)存來存儲(chǔ)和處理紋理

壓縮紋理:glTexImage2D(GL_TEXTURE_2D,0, GL_COMPRESSED_RGB, nWidth, nHeight,0,eFormat, GL_UNSIGNED_BYTE, pBits);

選擇最快速度還是最佳質(zhì)量來選擇壓縮格式:glHint();

從內(nèi)存中讀取已經(jīng)壓縮的紋理:glCompressedTexImage2D ()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末省容,一起剝皮案震驚了整個(gè)濱河市抖拴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腥椒,老刑警劉巖阿宅,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笼蛛,居然都是意外死亡洒放,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門滨砍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來往湿,“玉大人,你說我怎么就攤上這事惋戏×熳罚” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵日川,是天一觀的道長蔓腐。 經(jīng)常有香客問我矩乐,道長龄句,這世上最難降的妖魔是什么回论? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮分歇,結(jié)果婚禮上傀蓉,老公的妹妹穿的比我還像新娘。我一直安慰自己职抡,他們只是感情好葬燎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缚甩,像睡著了一般谱净。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擅威,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天壕探,我揣著相機(jī)與錄音,去河邊找鬼郊丛。 笑死李请,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厉熟。 我是一名探鬼主播导盅,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揍瑟!你這毒婦竟也來了白翻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤月培,失蹤者是張志新(化名)和其女友劉穎嘁字,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杉畜,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纪蜒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纯续。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灭袁,靈堂內(nèi)的尸體忽然破棺而出猬错,到底是詐尸還是另有隱情,我是刑警寧澤茸歧,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布倦炒,位于F島的核電站,受9級特大地震影響软瞎,放射性物質(zhì)發(fā)生泄漏逢唤。R本人自食惡果不足惜拉讯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳖藕。 院中可真熱鬧魔慷,春花似錦、人聲如沸著恩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喉誊。三九已至邀摆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伍茄,已是汗流浹背隧熙。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幻林,地道東北人贞盯。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像沪饺,于是被迫代替她去往敵國和親躏敢。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1 紋理基礎(chǔ) 紋理是一種結(jié)構(gòu)化的存儲(chǔ)形式(Textures are a structured form of st...
    RichardJieChen閱讀 15,826評論 0 9
  • 一整葡、紋理基礎(chǔ) 3D圖形渲染中最基本的操作就是對一個(gè)表面應(yīng)用紋理件余。紋理可以表現(xiàn)只從網(wǎng)格的幾何形狀無法得到的附加細(xì)節(jié)。...
    cain_huang閱讀 8,804評論 0 7
  • http://blog.csdn.net/wangdingqiaoit/article/details/51457...
    jerryhigh閱讀 5,334評論 0 8
  • OpenGL: 紋理 1. 原始圖像數(shù)據(jù) 像素包裝圖像存儲(chǔ)空間 = 圖像width * 圖像height * 每個(gè)...
    Neal_f閱讀 1,288評論 0 2
  • 紋理 紋理是一個(gè)用來保存圖像的顏色元素值的OpenGL ES 緩存遭居。它可以控制一個(gè)渲染的三角形中每個(gè)像素的...
    Terrnce閱讀 1,927評論 0 0