OpenGL四邊形,六邊形白华,三角形馬賽克實現(xiàn)

21世紀(jì)最糟糕的發(fā)明當(dāng)屬馬賽克慨默,阻止了人類對文明的探尋(哈哈哈,其奧秘自行腦補哈~)

今天就來說一下OpenGL里這令人不爽的馬賽克實現(xiàn)原理

馬賽克原理總結(jié)為一句話弧腥,就是選擇一塊區(qū)域厦取,此區(qū)域的顏色展示統(tǒng)一使用原來該區(qū)域的某個點的顏色值。

其根據(jù)算法不一樣管搪,可以展示大小不同虾攻,形狀不同,效果不同的各種被處理后的馬賽克圖片更鲁。

如圖對比:


原圖


四邊形馬賽克


六邊形馬賽克


三角形馬賽克

一般來說四邊形馬賽克在定義好精度區(qū)域的情況下霎箍,還是較容易實現(xiàn)的,現(xiàn)在重點講一下六邊形馬賽克的實現(xiàn)原理:

首先明白六邊形區(qū)域的劃分澡为,邊長與寬的比值漂坏,因為滿足平鋪平面的圖形是有形狀要求的,分割成由六邊形后讓每個六邊形中的顏色相同(直接取六邊形中心點像素RGB較方便,我們這里采用的就是這種方法) 將它進(jìn)?行行分割顶别,取每個六邊形的中心點畫出?個矩陣谷徙,如下:


六邊形中的紋理坐標(biāo)值

如上圖,畫出很多長和寬?例為 3:√3 的的矩形陣筋夏。然后我們可以 對每個點進(jìn)行編號蒂胞,如上圖中,采用坐標(biāo)系標(biāo)記.?

假如我們的屏幕的左上點為上圖的(0,0)點条篷,則屏幕上的任?一點我 們找到它所對應(yīng)的那個矩形了了骗随。?

假定我們設(shè)定的矩陣?比例例為3*LEN : √3*LEN,那么屏幕上的任意點(x, y)所對應(yīng)的矩陣坐標(biāo)為(int(x/(3*LEN)), int(y/ (√3*LEN)))赴叹。?

//wx,wy -> 表示紋理坐標(biāo)在所對應(yīng)的矩陣坐標(biāo)為?

int wx = int(x /( 1.5 * length));?

int wy = int(y /(TR * length));?


中心點對應(yīng)

片元著色器代碼main{}核心算法部分:

floatlength= mosaicSize;

? ? float TR = 0.866025;

? ? floatTB =1.5;

? ? floatx = TextureCoordsVarying.x;

? ? floaty = TextureCoordsVarying.y;

? ? intwx =int(x / TB /length);

? ? intwy =int(y / TR /length);

? ? vec2v1, v2, vn;

? ? if(wx/2*2== wx) {

? ? ? ? if(wy/2*2== wy) {

? ? ? ? ? ? //(0,0),(1,1)

? ? ? ? ? ? v1 =vec2(length*1.5*float(wx),length* TR *float(wy));

? ? ? ? ? ? v2 =vec2(length*1.5*float(wx +1),length* TR *float(wy +1));

? ? ? ? }?else?{

? ? ? ? ? ? //(0,1),(1,0)

? ? ? ? ? ? v1 =vec2(length*1.5*float(wx),length* TR *float(wy +1));

? ? ? ? ? ? v2 =vec2(length*1.5*float(wx +1),length* TR *float(wy));

? ? ? ? }

? ? }?else?{

? ? ? ? if(wy/2*2== wy) {

? ? ? ? ? ? //(0,1),(1,0)

? ? ? ? ? ? v1 =vec2(length*1.5*float(wx),length* TR *float(wy +1));

? ? ? ? ? ? v2 =vec2(length*1.5*float(wx +1),length* TR *float(wy));

? ? ? ? }?else?{

? ? ? ? ? ? //(0,0),(1,1)

? ? ? ? ? ? v1 =vec2(length*1.5*float(wx),length* TR *float(wy));

? ? ? ? ? ? v2 =vec2(length*1.5*float(wx +1),length* TR *float(wy +1));

? ? ? ? }

? ? }

? ? floats1 =sqrt(pow(v1.x - x,2.0) +pow(v1.y - y,2.0));

? ? floats2 =sqrt(pow(v2.x - x,2.0) +pow(v2.y - y,2.0));

? ? if(s1 < s2) {

? ? ? ? vn = v1;

? ? }?else?{

? ? ? ? vn = v2;

? ? }

?? ?vec4color =texture2D(Texture, vn);

? ? gl_FragColor= color;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸿染,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乞巧,更是在濱河造成了極大的恐慌涨椒,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽媒,死亡現(xiàn)場離奇詭異蚕冬,居然都是意外死亡,警方通過查閱死者的電腦和手機是辕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門囤热,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人获三,你說我怎么就攤上這事旁蔼。” “怎么了疙教?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵棺聊,是天一觀的道長。 經(jīng)常有香客問我贞谓,道長限佩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任裸弦,我火速辦了婚禮祟同,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烁兰。我一直安慰自己,他們只是感情好徊都,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布沪斟。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪主之。 梳的紋絲不亂的頭發(fā)上择吊,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音槽奕,去河邊找鬼几睛。 笑死,一個胖子當(dāng)著我的面吹牛粤攒,可吹牛的內(nèi)容都是我干的所森。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼夯接,長吁一口氣:“原來是場噩夢啊……” “哼焕济!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盔几,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤晴弃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后逊拍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體上鞠,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年芯丧,在試婚紗的時候發(fā)現(xiàn)自己被綠了芍阎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡注整,死狀恐怖能曾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肿轨,我是刑警寧澤寿冕,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站椒袍,受9級特大地震影響驼唱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驹暑,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一玫恳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧优俘,春花似錦京办、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春财饥,著一層夾襖步出監(jiān)牢的瞬間换吧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工钥星, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沾瓦,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓谦炒,卻偏偏與公主長得像贯莺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子编饺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354