OpenGL 蒙版技術 java

2021-05-24 21:17:59 字數 1773 閱讀 8470

geolo

出處)蒙板就好像隔著雕花牆往裡面看的效果一樣

具體步驟:

1雕花牆是乙個紋理,牆體為彩色,鏤空地方為黑色,預先給它生成乙個一樣的黑白紋理,使鏤空的地方為白色,牆體為黑色

2.畫牆內的景色

3 glblendfunc(gl_dst_color,gl_zero);畫黑白紋理

其中gl_dst_color 對應的混合因子為(rd, gd, bd, ad),也就是幀快取中原畫素的顏色。把黑白紋理與gl_dst_color 相乘。牆體為黑色,則結果為黑色,鏤空為白色,則結果為原畫素中顏色。

4 glblendfunc(gl_one, gl_one);

畫雕花牆的紋理

畫雕花牆鏤空的地方為黑色,則使用原想色顏色,上步渲染中,鏤空地方為原牆內景色。牆體部分 = 現顏色 + 第3步後的顏色。第3步牆體為黑色,即值為0,則牆體部分 = 現顏色 + 0 = 現顏色  

二、關於opengl的深度、深度快取、深度測試的含義

1. 深度 -- 就是當前所繪製的畫素點距離「視眼」的距離

2. 深度快取 -- 該快取儲存了每乙個所要繪製的畫素點的深度值

3. 深度測試 -- 兩個狀態,乙個狀態是繪製較遠距離的畫素點,另乙個則是較近距離的。預設值是選用較近的,而讓較遠的優先有透視的效果。在開啟透視狀態後,就可以體會到乙個人站在鐵軌上,視線和鐵軌軌跡平行,看到鐵軌的雙邊在遠方集合到了乙個點上了。

三、為什麼要使用蒙版技術呢?

當我們有多個紋理同時對映到多邊形的同乙個位置的時候,如果使用普通的混合模式的話,顏色會重疊而沒有那種透過蚊帳看物體的效果了。

四、nehe對蒙版技術的兩個步驟

a、首先我們在場景上放置黑白相間的紋理,白色代表透明部分,黑色代表不透明部分。

b、 接著我們使用一種特殊的混合方式,只有在黑色部分上的紋理才會顯示在場景上。

黑白相間的紋理如圖1

五、專案**中的蒙版步驟以及原理

1. 我們用**中gldrawelements方法為分割標記。

2. 第一次使用gldrawelements方法表示將繪製乙個正方形並將背景圖紋理上去。

3. 啟動混合功能gl.glenable(gl10.gl_blend);

4. 禁止深度測試gl.gldisable(gl10.gl_depth_test);等到蒙版成功後,我們還是需要開啟深度測試的。關於深度這些含義,第二部分已經解釋了。

5. 一種特殊混合效果

glblendfunc(gl10.gl_dst_color, gl10.gl_zero);這裡的含義是 將背景圖的畫素 乘以 圖1的畫素 得到乙個新圖的畫素。  因為黑色(0,0,0,1)、白色(1,1,1,1)因此,和黑色部分相乘的畫素就變成黑色的了(x * 0 = 0).而和白色相乘的部分依舊還是白色的。是一種與操作

6.第二次使用

gldrawelements方法將蒙版過的效果繪製出來。

7. 前面的蒙版以後因為畫素不全是黑白畫素,也會摻雜rgb別的畫素,所以相乘的結果會讓背景圖上有種玻璃陰影的效果。所以,這時候要把圖2繪製上去。圖2直接貼上去就成為覆蓋了,那如何貼上去呢??

8. 這裡又需要使用另一種特殊混色效果了glblendfunc(gl10.gl_one, gl10.gl_one);這裡的效果含義是 將 新的的畫素  與  圖2的畫素  相加  再得到最新的畫素了。。。是一種加操作。

9. 最後一次使用

gldrawelements方法將蒙版繪製出來,這時候就是我們需要的效果了。

10. **的事例讓背景圖和紋理圖都增加了動畫,為的就是讓顯示的效果更為明顯。

效果圖:該圖被壓縮過,失真很厲害。。。。。

android 漸變蒙版 iOS關於蒙版漸變的實現

有個需求,檢視的右邊需要漸隱,如下圖 這裡只是隨便拿個介面做下測試 paste image.png 要求整個view漸漸alpha變透明,包括view上的子view,需要一起變透明。拿起鍵盤就是幹 void testalpha self.view layoutifneeded uicolor col...

蒙版快取(Stencil buffer)

什麼是蒙版快取 影象硬體中有個特殊記憶體,叫stencil buffer。很多地方翻譯做模板快取,我覺的用蒙版快取更貼切。因為這個快取的和ps的圖層蒙版很相似。渲染目標 render target,可以是螢幕,可以是離屏表面,可以是紋理 中每個畫素在蒙版快取中都有對應的蒙版值 stencil ref...

8 4修改蒙版

這意味著在蒙版中也只存在著灰度。即使選取了帶有色相的顏色,在蒙版中也會轉為相應的灰度,就如同在alpha通道中遇到的情形一樣 使用移動工具 v 移 層 注意背景層是無法移動的 會發現蒙版也隨之移動,如下左圖。這是因為蒙版與圖層預設是存在著鏈結關係的。針對任何一者的變換 如旋轉 拉伸等,移動也算 操作...