紋理繪制就是紋理映射,這里有個(gè)術(shù)語 紋素 蕴坪,不是用像素來表示紋理對(duì)象中的顯示元素锦庸,主要是為了強(qiáng)調(diào)紋理對(duì)象的應(yīng)用方式。紋理對(duì)象通常是通過紋理圖片讀取到的闰非,這個(gè)數(shù)據(jù)保存到一個(gè)二維數(shù)組中膘格,這個(gè)數(shù)組中的元素稱為紋素(texel),紋素包含顏色值和alpha值财松。
紋理填充繪制 WRAP參數(shù)
紋理的繪制方式:
- GL_REPEAT
- GL_MIRRORED_REPEAT
- GL_CLAMP_TO_EDGE
- GL_CLAMP_TO_BORDER
紋理詳細(xì)的介紹瘪贱,參考:
二維紋理映射
繪制顛倒的問題
為什么會(huì)存在繪制顛倒的問題呢 ?
"坐標(biāo)系"
紋理坐標(biāo)系(uv)是右手坐標(biāo)系辆毡,屏幕坐標(biāo)又是左手坐標(biāo)系菜秦;所以在屏幕中顯示的點(diǎn),需要在腳本之前或處理中進(jìn)行y翻轉(zhuǎn)舶掖。
解決方案:
- 在VBO頂點(diǎn)坐標(biāo)上進(jìn)行Y的處理(1-y)
- 在頂點(diǎn)著色器中進(jìn)行Y翻轉(zhuǎn) gl_Position = vec4(position.x, -position.y,position.z, 1.0);
- 翻轉(zhuǎn)紋理的Y軸坐標(biāo) vTexcoord = vec2(texcoord.x,1.0-texcoord.y);
繪制比例問題
UIImageView的contentMode經(jīng)常使用的有3種:
- scaleToFill
- scaleAspectFit
- scaleAspectFill
我們需要使用比例處理:
添加 < AVFoundation Framework >
CGRect realRect = AVMakeRectWithAspectRatioInsideRect(image.size, self.view.bounds);
圖像簡單處理
學(xué)會(huì)使用繪制紋理后球昨,就可以使用腳本處理自定義的一些效果。
- 灰度處理
- 簡答模糊處理
- 簡單的顏色映射眨攘,LUT濾鏡