最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解?OpenGL?ES?紋理顏色混合的方法

 更新時(shí)間:2021年12月16日 09:47:30   作者:xiaxveliang  
在OpenGL中繪制的時(shí)候,有時(shí)候想使新畫的顏色和已經(jīng)有的顏色按照一定的方式進(jìn)行混合。怎么實(shí)現(xiàn)這個(gè)效果呢,下面小編給大家?guī)?lái)了OpenGL?ES?紋理顏色混合的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧

在OpenGL中繪制的時(shí)候,有時(shí)候想使新畫的顏色和已經(jīng)有的顏色按照一定的方式進(jìn)行混合。例如:想使物體擁有半透明的效果,或者繪制疊加光亮的效果,這時(shí)候就需要用到OpenGLES混合

如上圖所示,為石頭墻、綠色矩形、藍(lán)色云彩 三個(gè)矩形混合后的展示效果。三個(gè)矩形(Z軸深度由深到淺)分別為,石頭墻、綠色矩形、藍(lán)色云彩。

一、混合API

在OpenGLES中若使用混合,需要用到API函數(shù)方法(Java):
void glBlendFunc( int srcfactor, int destfactor );

(1) 其OpenGL函數(shù)原型為:
void glBlendFunc(GLenum srcfactor, GLenum destfactor);

(2) 其功能為:
控制新畫上來(lái)的顏色 (source values, RGBA) 和 已經(jīng)在幀緩沖區(qū)中的顏色 (destination values, RGBA) 的混合時(shí)源與目標(biāo) 在最終顏色通道中所占的比例

(3) 方法參數(shù)

  • srcfactor:代表源因子,即新畫上來(lái)的顏色。

該參數(shù)由九個(gè)枚舉型被接受使用:
GL_ZERO,
GL_ONE,
GL_DST_COLOR,
GL_ONE_MINUS_DST_COLOR,
GL_SRC_ALPHA,
GL_ONE_MINUS_SRC_ALPHA,
GL_DST_ALPHA,
GL_ONE_MINUS_DST_ALPHA,
GL_SRC_ALPHA_SATURATE.

  • destfactor:代表的是目標(biāo)因子,即已經(jīng)在幀緩沖區(qū)中的顏色。

該參數(shù)由八個(gè)枚舉型被接受使用:
GL_ZERO,
GL_ONE,
GL_SRC_COLOR,
GL_ONE_MINUS_SRC_COLOR,
GL_SRC_ALPHA,
GL_ONE_MINUS_SRC_ALPHA,
GL_DST_ALPHA,
GL_ONE_MINUS_DST_ALPHA

二、參數(shù)含義

  • 舉個(gè)栗子
  • 參數(shù)含義

2.1 舉個(gè)栗子

我們先看一個(gè)常用混合參數(shù)搭配:

// 最常用的混合因子搭配方式
// 即源因子為 GL_SRC_ALPHA 目標(biāo)因子為 GL_ONE_MINUS_SRC_ALPHA 
glBlendFunc(GL30.GL_SRC_ALPHA, GL30.GL_ONE_MINUS_SRC_ALPHA);

以上參數(shù)搭配方式假設(shè):

  • (Sr, Sg, Sb, Sa)代表源顏色src(要繪制的顏色)
  • (Dr, Dg, Db, Da)代表目標(biāo)顏色Dest(緩沖區(qū)中顏色)

如果源因子的不透明度為0.2(透明度0.8),alpha值的最大值為1,那么源與目標(biāo)混合后的最終顏色值為:

// 最終顏色值為:0.2*S+0.8*D
// OpenGL ES 最終顏色計(jì)算結(jié)果如下:
(0.2*Sr+(1-0.2)*Dr , 0.2*Sg+(1-0.2)*Dg , 0.2*Sb+(1-0.2)*Db,0.2*Sa+(1-0.2)*Da)

啟用混合與紋理矩形繪制順序代碼舉例:

// 開(kāi)啟混合  
gl.glEnable(GL10.GL_BLEND);  
// 指定混合比例
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);  
  
// 繪制石頭墻紋理矩形
gl.glPushMatrix();  
gl.glTranslatef(-0.8f, -0.8f, -0.02f);  
wallRect.drawSelf(gl, tex_wall);  
gl.glPopMatrix();  
  
// 繪制綠色紋理矩形
gl.glPushMatrix();  
gl.glTranslatef(0, 0, -0.01f);  
greenRect.drawSelf(gl, tex_green);  
gl.glPopMatrix();  
  
// 繪制藍(lán)色云彩紋理矩形
gl.glPushMatrix();  
gl.glTranslatef(0.8f, 0.8f, 0f);  
cloudRect.drawSelf(gl, tex_cloud);  
gl.glPopMatrix();`

2.2 參數(shù)含義

有了上邊的例子,我們?cè)倩貋?lái)看各個(gè)參數(shù)因子。

假設(shè):

  • (Sr, Sg, Sb, Sa)代表源顏色src(要繪制的顏色);
  • (Dr, Dg, Db, Da)代表目標(biāo)顏色Dest(緩沖區(qū)中顏色)
  • (Kr, Kg, Kb, Ka)代表緩沖區(qū)中各個(gè)通道R, G, B, A的最大值。

那么各個(gè)參數(shù)因子所代表的值如下表所示:

混合因子 各顏色通道色彩比例值
GL_ZERO (0,0,0,0)
GL_ONE (1,1,1,1)
GL_SRC_COLOR (Sr/Kr, Sg/Kg, Sb/Kb, Sa/Ka)
GL_DST_COLOR (Dr/Kr, Dg/Kg, Db/Kb, Da/Ka)
GL_ONE_MINUS_SRC_COLOR (1,1,1,1) - (Sr/Kr,Sg/Kg,Sb/Kb,Sa/Ka)
GL_ONE_MINUS_DST_COLOR (1,1,1,1) - (Dr/Kr,Dg/Kg,Db/Kb,Da/Ka)
GL_SRC_ALPHA ( Sa/Ka, Sa/Ka, Sa/Ka, Sa/Ka )
GL_ONE_MINUS_SRC_ALPHA (1,1,1,1) - (Sa/Ka,Sa/Ka,Sa/Ka,Sa/Ka)
GL_DST_ALPHA ( Da/Ka, Da/Ka, Da/Ka, Da/Ka )
GL_ONE_MINUS_DST_ALPHA (1,1,1,1) - (Da/Ka,Da/Ka,Da/Ka,Da/Ka)
GL_SRC_ALPHA_SATURATE (min(Sa, Ka, Da)/Ka,min(Sa, Ka, Da)/Ka,min(Sa, Ka, Da)/Ka,1)

三、 幾種常用混合方式效果

下邊以三張紋理圖片在不同混合因子設(shè)置下的效果圖,對(duì)幾種常見(jiàn)的混合效果進(jìn)行舉例說(shuō)明。

  • 其中 離攝像機(jī)最遠(yuǎn)的為一張 Alpha=1.0石頭墻紋理圖;
  • 其次 為一張 Alpha=0.6藍(lán)色云彩紋理圖;
  • 最后離攝像機(jī)最近的為一張 Alpha=0.4的綠色紋理圖。

3.1 混合(GL_ONE, GL_ZERO)

源顏色(最后繪制的綠色矩形)參數(shù)因子為GL_ONE,目標(biāo)色(緩沖區(qū)中顏色)參數(shù)因子為GL_ZERO。

這種參數(shù)因子組合混合比例 (1.0, 0.0)

  • 源顏色(最后繪制的綠色矩形)覆蓋目標(biāo)色(緩沖區(qū)中顏色);
  • 目標(biāo)色(緩沖區(qū)中顏色)不起作用,

其運(yùn)行效果如下圖所示:

3.2 混合(GL_ONE, GL_ONE)

源顏色(最后繪制的綠色矩形)與 目標(biāo)色(緩沖區(qū)中顏色)均為GL_ONE。

這種參數(shù)因子組合混合比例 (1.0, 1.0)

  • 源顏色(最后繪制的綠色矩形)目標(biāo)色(緩沖區(qū)中顏色)在混合時(shí),源與目標(biāo)的色彩通道顏色所占的比例相同。

其運(yùn)行效果如下圖所示:

仔細(xì)觀察以上效果圖,可以看到三張圖片疊加部分,幾乎為白色。

3.3 混合(GL_ONE, GL_ONE_MINUS_DST_ALPHA)

源顏色(最后繪制的綠色矩形)參數(shù)因子為 GL_ONE,目標(biāo)色(緩沖區(qū)中顏色)參數(shù)因子為 GL_ONE_MINUS_DST_ALPHA。

這種參數(shù)因子組合混合比例 (1.0, 1.0-Da/Ka)

  • 源顏色(最后繪制的綠色矩形)目標(biāo)色(緩沖區(qū)中顏色),在混合時(shí)取源顏色 (1- Da/Ka)比例進(jìn)行混合。

其運(yùn)行效果如下圖所示:

觀察以上效果圖:可以看到最上邊綠色矩形占最終混合顏色的比例較高。
三張紋理繪制時(shí):

  • 前兩張紋理混合時(shí):源顏色為藍(lán)色云彩紋理矩形,目標(biāo)顏色為石頭墻紋理矩形。
  • 由于混合比例為 (1.0, 1.0-Da/Ka),混合后的最終顏色只顯示藍(lán)色云彩紋理矩形(石頭墻紋理的ALPHA=1.0,最終石頭墻顏色所占的比例 1.0-1.0=0.0,比例為0)。
  • 其次綠色紋理矩形緩沖區(qū)中顏色進(jìn)行混合:源顏色為綠色紋理矩形,目標(biāo)顏色為緩沖區(qū)中顏色。

混合后的最終顏色基本只顯示綠色紋理矩形(藍(lán)色云彩紋理矩形的ALPHA=0.6,(1-0.6)云紋理與綠色矩形混合后,幾乎看不到云紋理的顏色)。

3.4 混合 (GL_SRC_ALPHA, GL_ONE)

源顏色(最后繪制的綠色矩形)參數(shù)因子為 GL_SRC_ALPHA,目標(biāo)色(緩沖區(qū)中顏色)參數(shù)因子為 GL_ONE。

這種參數(shù)因子組合混合比例 (Sa/Ka, 1.0)

  • 源顏色(最后繪制的綠色矩形)目標(biāo)色(緩沖區(qū)中顏色),在混合時(shí)以源顏色值乘以Sa/Ka與目標(biāo)顏色值相加。

其運(yùn)行效果如下圖所示:

觀察以上效果圖,可以看出目標(biāo)墻面與云紋理混合后墻面紋理顏色值所占比例較高,三個(gè)紋理圖片疊加部分有些像素點(diǎn)為白色。

3.5 混合 (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

這種方式是最常用的混合方式,源顏色(最后繪制的綠色矩形)參數(shù)因子為 GL_SRC_ALPHA,目標(biāo)色(緩沖區(qū)中顏色)參數(shù)因子為 GL_ONE_MINUS_SRC_ALPHA。

這種參數(shù)因子組合混合比例 (Sa/Ka, 1.0-Sa/Ka)

  • 源顏色(最后繪制的綠色矩形)目標(biāo)色(緩沖區(qū)中顏色)在混合時(shí),取源顏色的 (Sa/Ka) 與目標(biāo)顏色 (1.0-Sa/Ka) 相加計(jì)算最終的顏色值。

其運(yùn)行效果如下圖所示:

附案例代碼

案例源碼下載地址:
https://download.csdn.net/download/aiwusheng/64038379

到此這篇關(guān)于一文詳解?OpenGL?ES?紋理顏色混合的文章就介紹到這了,更多相關(guān)OpenGL?ES?紋理顏色混合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 初探 SOA

    初探 SOA

    SOA服務(wù)具有平臺(tái)獨(dú)立的自我描述XML文檔。Web服務(wù)描述語(yǔ)言(WSDL, Web Services Description Language)是用于描述服務(wù)的標(biāo)準(zhǔn)語(yǔ)言。
    2009-01-01
  • DeepSeek模型本地部署的詳細(xì)教程

    DeepSeek模型本地部署的詳細(xì)教程

    DeepSeek作為一款開(kāi)源且性能強(qiáng)大的大語(yǔ)言模型,提供了靈活的本地部署方案,讓用戶能夠在本地環(huán)境中高效運(yùn)行模型,同時(shí)保護(hù)數(shù)據(jù)隱私,在本地成功部署DeepSeek模型,并通過(guò)Ollama或Open?Web?UI與模型進(jìn)行交互
    2025-02-02
  • 基于ChatGPT使用AI實(shí)現(xiàn)自然對(duì)話的原理分析

    基于ChatGPT使用AI實(shí)現(xiàn)自然對(duì)話的原理分析

    ChatGPT是當(dāng)前自然語(yǔ)言處理領(lǐng)域的重要進(jìn)展之一,可以生成高質(zhì)量的文本,可應(yīng)用于多種場(chǎng)景,如智能客服、聊天機(jī)器人、語(yǔ)音助手等。本文將詳細(xì)介紹ChatGPT的原理、實(shí)戰(zhàn)演練和流程圖,幫助讀者更好地理解ChatGPT技術(shù)的應(yīng)用和優(yōu)勢(shì)
    2023-05-05
  • 微信小程序(微信應(yīng)用號(hào))開(kāi)發(fā)工具0.9版安裝詳細(xì)教程

    微信小程序(微信應(yīng)用號(hào))開(kāi)發(fā)工具0.9版安裝詳細(xì)教程

    這篇文章主要介紹了微信小程序(微信應(yīng)用號(hào))開(kāi)發(fā)工具0.9版安裝詳細(xì)教程的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • ChatGPT平替-ChatGLM環(huán)境搭建與部署運(yùn)行效果

    ChatGPT平替-ChatGLM環(huán)境搭建與部署運(yùn)行效果

    這篇文章主要介紹了ChatGPT平替-ChatGLM環(huán)境搭建與部署運(yùn)行,本節(jié)將介紹環(huán)境搭建與基本部署效果,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Web Jmeter–接口測(cè)試工具詳解

    Web Jmeter–接口測(cè)試工具詳解

    本文主要介紹Web Jmeter接口測(cè)試工具,這里整理了詳細(xì)的資料來(lái)說(shuō)明Jmeter 的使用,有需要的小伙伴可以參考下
    2016-09-09
  • 程序員 代碼是從頭編還是使用框架好呢?

    程序員 代碼是從頭編還是使用框架好呢?

    為什么框架發(fā)展得越來(lái)越好,因?yàn)樵絹?lái)越多的程序員選擇使用框架。當(dāng)處于實(shí)際的項(xiàng)目開(kāi)發(fā)中,程序員就會(huì)發(fā)現(xiàn)項(xiàng)目周期短,使用框架可以最有效地節(jié)約時(shí)間。如果完全從頭開(kāi)始編程,使用時(shí)間太多不說(shuō),對(duì)程序員的個(gè)人編碼水平也提出了很高的要求
    2017-08-08
  • C++/QT/Python/MATLAB獲取文件行數(shù)的示例詳解

    C++/QT/Python/MATLAB獲取文件行數(shù)的示例詳解

    這篇文章主要為大家學(xué)習(xí)介紹了如何利用C++、QT、Python、MATLAB分別實(shí)現(xiàn)獲取文件行數(shù)的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08
  • 聊聊Druid register mbean error的問(wèn)題

    聊聊Druid register mbean error的問(wèn)題

    這篇文章主要介紹了Druid register mbean error的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 解決Git?Bash中文亂碼的問(wèn)題

    解決Git?Bash中文亂碼的問(wèn)題

    這篇文章介紹了解決Git?Bash中文亂碼的的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評(píng)論

石屏县| 铁力市| 西宁市| 安福县| 凤翔县| 云安县| 凭祥市| 黄平县| 信宜市| 祁阳县| 平阳县| 碌曲县| 澄城县| 福建省| 会理县| 肇州县| 米泉市| 龙南县| 苗栗县| 普陀区| 美姑县| 和顺县| 鄢陵县| 刚察县| 芦山县| 彩票| 金溪县| 漳州市| 六枝特区| 东宁县| 高平市| 肥西县| 临湘市| 嘉黎县| 延边| 巴彦淖尔市| 乃东县| 商洛市| 天气| 滦平县| 滦南县|