• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰魂小筑

            討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            前段時間曾經碰到過RT紋理繪制出來時需要透明的問題。當時也Google了一下,但是很少有人提起過這個問題。昨天看劍孤寒的空間的Galaxy2D引擎中使用RT的透明繪制,文章在這里。發現這個特性居然需要顯卡支持,馬上查過DX9SDK文檔,發現這樣一篇文章,已經告訴我們怎么做了:

            Render Target Alpha (Direct3D 9)

            The frame buffer blender can now blend alpha channels independent from color-channel blending on render targets. This control is enabled with a new render state, D3DRS_SEPARATEALPHABLENDENABLE.

            When D3DRS_SEPARATEALPHABLENDENABLE is set to FALSE (which is the default condition), the render-target blending factors and operations applied to alpha are the same as those defined for blending color channels. A driver needs to set the D3DPMISCCAPS_SEPARATEALPHABLEND cap to indicate that it can support render-target alpha blending. Be sure to enable D3DRS_ALPHABLEND to tell the pipeline that alpha blending is needed.

            To control the factors in the alpha channel of the render-target blenders, two new render states are defined as follows:

            D3DRS_SRCBLENDALPHA 
            D3DRS_DESTBLENDALPHA 
            

            Like the D3DRS_SRCBLEND and D3DRS_DESTBLEND, these can be set to one of the values in the D3DBLEND enumeration. The source and destination blend settings can be combined in several ways, depending on the settings in the SrcBlendCaps and DestBlendCaps members of D3DCAPS9.

            The alpha blending is done as follows:

            renderTargetAlpha = (alphain* srcBlendOp) BlendOp (alphart* destBlendOp) 
            

            Where:

            • alphain is the input alpha value.
            • srcBlendOp is one of the blend factors in D3DBLEND.
            • BlendOp is one of the blend factors in D3DBLENDOP.
            • alphart is the render-target alpha value.
            • destBlendOp is one of the blend factors in D3DBLEND.
            • renderTargetAlpha is the final blended alpha value.

             

            翻譯如下:

               使用 D3DRS_SEPARATEALPHABLENDENABLE渲染狀態可以讓Frame Buffer 混合器將RT中的Alpha通道與顏色通道分開混合。

            當D3DRS_SEPARATEALPHABLENDENABLE 設置為 FALSE(默認),RT渲染參數和操作會跟顏色通道一樣被應用到Alpha通道。 這項特性需要顯卡支持D3DPMISCCAPS_SEPARATEALPHABLEND 特性。記住,在之前設置D3DRS_ALPHABLEND以便打開Alpha混合。

               RT混合器的Alpha通道混合因子渲染狀態如下:

            D3DRS_SRCBLENDALPHA

            D3DRS_DESTBLENDALPHA

            其被定義在D3DBLEND枚舉中,D3DRS_SRCBLEND 和D3DRS_DESTBLEND也是這樣定義的。來源色與目標顏色將會有很多組合方式,主要依賴于D3DCAPS9中的SrcBlendCaps 和DestBlendCaps

            Alpha混合公式如下:

            renderTargetAlpha = (alphain* srcBlendOp) BlendOp (alphart* destBlendOp)

            其中:

                alphain為輸入alpha值

                srcBlendOp是D3DBLEND中的一個混合因子

                BlendOp是 D3DBLENDOP中的一個混合因子

                alphart是RT的alpha值

                destBlendOp是D3DBLEND中的一個混合因子

                renderTargetAlpha是最后混合后的alpha值

            posted on 2010-01-20 16:56 戰魂小筑 閱讀(2864) 評論(1)  編輯 收藏 引用 所屬分類: 游戲開發技術C++/ 編程語言

            評論

            # re: 解決Render Target中的Alpha通道繪制問題 2010-01-21 18:27 yoya
            這篇文章是不是只是說alpha和color的混合可以分開進行?如果不按照文中設置,只是alpha和color用的D3DRS_SRCBLEND和D3DRS_DESTBLEND的參數
            那么render target里面還是可以設置alpha啊?

              回復  更多評論
              

            亚洲精品国产字幕久久不卡| 精品无码久久久久久国产| 国产精品久久久久免费a∨| 久久久久亚洲AV成人网人人网站 | 久久无码AV中文出轨人妻| 久久精品亚洲男人的天堂| 色狠狠久久综合网| 久久精品国产一区二区三区日韩| 99久久夜色精品国产网站| 久久久久久久综合狠狠综合| MM131亚洲国产美女久久| 久久综合久久性久99毛片| 久久久久久国产精品免费无码 | 国产99久久久久久免费看| 狠狠色丁香久久婷婷综合_中| 久久久久久午夜成人影院| 久久久WWW成人免费精品| 久久精品国产亚洲AV无码麻豆| 日韩十八禁一区二区久久| 国产成人99久久亚洲综合精品| 亚洲色婷婷综合久久| 久久亚洲国产精品123区| 狠狠色丁香婷婷久久综合不卡| 久久久久久伊人高潮影院| 欧美精品丝袜久久久中文字幕| 精品国产乱码久久久久久郑州公司 | 久久综合给合久久狠狠狠97色| 99国产欧美精品久久久蜜芽| 久久精品国产乱子伦| 久久久国产精品| 亚洲伊人久久大香线蕉苏妲己| 日韩人妻无码精品久久久不卡| 伊人久久大香线蕉综合影院首页| 欧美午夜精品久久久久久浪潮| 99久久精品这里只有精品| 91精品国产综合久久精品| 97久久精品国产精品青草| 久久国产精品-久久精品| 久久国产高清字幕中文| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产精品美女久久久久网|