精华内容
下载资源
问答
  • Alpha Blend

    2016-04-04 07:59:32
    可编程通道实现Color混合,Alpha混合,实现一些透明效果.
  • MFC AlphaBlend 函数

    2021-03-19 09:46:41
    The AlphaBlend function displays bitmaps that have transparent or semitransparent pixels. AlphaBlend函数显示拥有透明或半透明像素点的位图。 BOOL AlphaBlend( HDC hdcDest, // handle to destination DC...


    The AlphaBlend function displays bitmaps that have transparent or semitransparent pixels.
    【AlphaBlend函数显示拥有透明或半透明像素点的位图。】

    Syntax(语法)

    BOOL AlphaBlend(  
      HDC hdcDest,                 // handle to destination DC(目标DC的句柄)
      int nXOriginDest,            // x-coord of upper-left corner(目标起点左上角X坐标)
      int nYOriginDest,            // y-coord of upper-left corner(目标起点左上角Y坐标)
      int nWidthDest,              // destination width(目标宽)
      int nHeightDest,             // destination height(目标高)
      HDC hdcSrc,                  // handle to source DC(源DC的句柄)
      int nXOriginSrc,             // x-coord of upper-left corner(源起点左上角X坐标)
      int nYOriginSrc,             // y-coord of upper-left corner(源起点左上角Y坐标)
      int nWidthSrc,               // source width(源宽)
      int nHeightSrc,              // source height(源高)
      BLENDFUNCTION blendFunction  // alpha-blending function(α混合函数)
    );
    

    Parameter(参数)

    hdcDest[in] Handle to the destination device context.
    【目标设备上下文的句柄】
    nXOriginDest[in] Specifies the x-coordinate, in logical units, of the upper-left corner of the destination rectangle.
    【以逻辑单位指定目标矩形左上角的x坐标。】
    nYOriginDest[in] Specifies the y-coordinate, in logical units, of the upper-left corner of the destination rectangle.
    【以逻辑单位指定目标矩形左上角的y坐标。】
    nWidthDest[in] Specifies the width, in logical units, of the destination rectangle.
    【以逻辑单位指定目标矩形的宽度。】
    nHeightDest[in] Specifies the height, in logical units, of the destination rectangle.
    【以逻辑单位指定目标矩形的高度。】
    hdcSrc[in] Handle to the source device context.
    【源设备上下文的句柄】
    nXOriginSrc[in] Specifies the x-coordinate, in logical units, of the upper-left corner of the source rectangle.
    【以逻辑单位指定源矩形左上角的x坐标。】
    nYOriginSrc[in] Specifies the y-coordinate, in logical units, of the upper-left corner of the source rectangle.
    【以逻辑单位指定源矩形左上角的y坐标。 】
    nWidthSrc[in] Specifies the width, in logical units, of the source rectangle.
    【以逻辑单位指定目标矩形的宽度。】
    nHeightSrc[in] Specifies the height, in logical units, of the source rectangle.
    【以逻辑单位指定目标矩形的高度。】
    blendFunction[in] Specifies the alpha-blending function for source and destination bitmaps, a global alpha value to be applied to the entire source bitmap, and format information for the source bitmap.
    【指定源位图和目标位图的alpha混合函数、应用于整个源位图的全局alpha值以及源位图的格式信息。】

    The source and destination blend functions are currently limited to AC_SRC_OVER. See the BLENDFUNCTION and EMRALPHABLEND structures.
    【源和目标混合函数当前限制为AC_SRC_OVER。请参见BLENDFUNCTIONEMRALPHABLEND结构。】

    Return Values(返回值)

    If the function succeeds, the return value is TRUE.
    If the function fails, the return value is FALSE.
    Windows NT/2000/XP: To get extended error information, call GetLastError. This can return the following value.
    【成功返回TRUE,失败返回FALSE。通过GetLastError获得更多的错误信息。错误值如下】

    ValueMeaning
    ERROR_INVALID_PARAMETER (宏值为87)One or more of the input parameters is invalid.

    Remarks(备注)

    If the source rectangle and destination rectangle are not the same size, the source bitmap is stretched to match the destination rectangle. If the SetStretchBltMode function is used, the iStretchMode value is automatically converted to COLORONCOLOR for this function (that is, BLACKONWHITE, WHITEONBLACK, and HALFTONE are changed to COLORONCOLOR).
    【如果源矩形和目标矩形的大小不同,则会拉伸源位图以匹配目标矩形。如果使用了SetStretchBltMode 函数,iStretchMode 的值自动被修改为COLORONCOLOR(BLACKONWHITE, WHITEONBLACK, 和HALFTONE被改为COLORONCOLOR)。】

    The destination coordinates are transformed by using the transformation currently specified for the destination device context. The source coordinates are transformed by using the transformation currently specified for the source device context.
    【通过使用当前为目标设备上下文指定的转换来转换目标坐标。通过使用当前为源设备上下文指定的转换来转换源坐标。】

    An error occurs (and the function returns FALSE) if the source device context identifies an enhanced metafile device context.
    【如果源设备上下文标识了一个增强的图元文件设备上下文,将触发错误(函数返回FALSE)。】

    If destination and source bitmaps do not have the same color format, AlphaBlend converts the source bitmap to match the destination bitmap.
    【如果目标位图和源位图的颜色格式不同,AlphaBlend将转换源位图以匹配目标位图。】

    AlphaBlend does not support mirroring. If either the width or height of the source or destination is negative, this call will fail.
    【AlphaBlend不支持镜像。如果源或目标的宽度或高度为负,则此调用将失败。】

    When rendering to a printer, first call GetDeviceCaps with SHADEBLENDCAPS to determine if the printer supports blending with AlphaBlend. Note that, for a display DC, all blending operations are supported and these flags represent whether the operations are accelerated.
    【渲染到打印机时,首先使用SHADEBLENDCAPS调用GetDeviceCaps,以确定打印机是否支持与AlphaBlend混合。注意,对于显示DC,支持所有混合操作,并且这些标志表示操作是否被加速。】

    If the source and destination are the same surface, that is, they are both the screen or the same memory bitmapand the source and destination rectangles overlap, an error occurs and the function returns FALSE.
    【如果源和目标是同一个曲面,即它们都是屏幕或同一内存位图,并且源和目标矩形重叠,则会发生错误,函数返回FALSE。】

    The source rectangle must lie completely within the source surface, otherwise an error occurs and the function returns FALSE.
    【源矩形必须完全位于源曲面内,否则会发生错误,函数将返回FALSE。】

    AlphaBlend fails if the width or height of the source or destination is negative.
    【如果源或目标的宽度或高度为负,AlphaBlend将失败。】

    Note 【注意】
    The SourceConstantaAlpha member of BLENDFUNCTION specifies an alpha transparency value to be used on the entire source bitmap. The SourceConstantAlpha value is combined with any per-pixel alpha values. If SourceConstantAlpha is 0, it is assumed that the image is transparent. Set the SourceConstantAlpha value to 255 (which indicates that the image is opaque) when you only want to use per-pixel alpha values.
    BLENDFUNCTION的SourceConstantaAlpha成员指定要在整个源位图上使用的alpha透明度值。SourceConstantAlpha值与任何每像素alpha值组合。如果SourceConstantAlpha为0,则假定图像是透明的。如果只希望使用每像素alpha值,请将SourceConstantAlpha值设置为255(这表示图像不透明)。】

    心得体会

    展开全文
  • 通过Win32编程技术实现位图的透明功能 内含源代码和位图资源 主要用于我的博文的资源下载,博文地址: http://blog.csdn.net/crocodile__/article/details/10156817
  • unity官方文档对于alphablend的解释不知是翻译还是什么问题,感觉略深奥呀,感觉不通俗。 今天来给自己和大家做一个关于alphablend的终极解释。 关于Alpha Blend的定义: shader执行后,计算出来的像素颜色值与...

    抓手:

    unity官方文档对于alpha blend的解释不知是翻译还是什么问题,感觉略深奥呀,感觉不通俗。

    今天来给自己和大家做一个关于alpha blend的终极解释,建议大家把alpha blend当做一个简单的计算公式看待。

    最后会提供一个灵活的例子,展示在shader里咋写会更灵活。

     

    关于Alpha Blend的定义

    shader执行后,计算出来的像素颜色值与已有像素的颜色值的组合方式的 控制命令称为:alpha blend!

    也就是,alpha blend是一种控制命令,是一种命令!

    我自己对于Alpha Blend理解的定义:

    alpha blend是一个计算公式,和Photoshop的图层的混合模式的计算公式类似。

     

    语法:

    Blend SrcFactor DstFactor

    翻译 Factor:因子

    其中,SrcFactor和DstFactor的值类型应该是vector到vector4,例如float(1.0)或float4(0.5,0.8,0.5,1)这种。

    对应的公式为:

    最终的颜色 = (shader计算的颜色*SrcFactor) + (屏幕已有的颜色*DstFactor)

     

    所有的Factor如下:

    One 1

    Zero 0

    SrcColor shader计算后的rgb值

    SrcAlpha shader计算后alpha值

    DrcColor 帧缓冲区的源rgb值(屏幕已有颜色)

    DrcAlpha 帧缓冲区的源alpha值(屏幕已有颜色的alpha值)

    OneMinusSrcColor  也就是1-SrcColor

    OneMinusSrcAlpha 也就是1-SrcAlpha

    OneMinusDstColor 也就是1-DstColor

    OneMinusDstAlpha 也就是1-DstAlpha

     

    运算:

    BlendOp Op  可以更换blend的运算,默认的blend运算是add,也就是相加

    可以改成

    BlendOp Sub 也就是:

    最终的颜色 = (shader计算的颜色*SrcFactor) - (屏幕已有的颜色*DstFactor)

    BlendOp RevSub 也就是

    最终的颜色 =  (屏幕已有的颜色*DstFactor) - (shader计算的颜色*SrcFactor)

    Min

    最终的颜色 =  min((屏幕已有的颜色*DstFactor), (shader计算的颜色*SrcFactor))

    也就是,这个像素的颜色为: (屏幕已有的颜色*DstFactor) 和  (shader计算的颜色*SrcFactor) 里选一个颜色值最小的颜色。

    Max

    最终的颜色 =  max((屏幕已有的颜色*DstFactor), (shader计算的颜色*SrcFactor))

    也就是,这个像素的颜色为: (屏幕已有的颜色*DstFactor) 和  (shader计算的颜色*SrcFactor) 里选一个颜色值最大的颜色。

     

    例如:

    公式:

    Blend One One = shader计算出来的颜色*1+屏幕已有颜色(也就是背景的蓝色)*1

    和Photoshop的线性减淡类似。

     

    所以同理可得:

    blend One OneMinusSrcAlpha = shaderCol*1+screen*(1-贴图alpha)

    blend SrcAlpha OneMinusSrcAlpha = shaderCol*(贴图alpha)+screen*(1-贴图alpha)

     

    在shader里也可以这样写:

    Properties

    {

      ...

      _BlendSrc("_BlendSrc",int) = 1

      _BlendDrc("_BlendDrc",int) = 1

      _BlendOp("_BlendOp",int) = 0

    }

    SubShader

           {

           Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }

             LOD 100

             Pass

                {

                Blend [_BlendSrc] [_BlendDrc]

                BlendOp [_BlendOp]

                    ...

                }

       }

    其中_BlendSrc或_BlendDrc的值代表:

    具体可以参考UnityEngine.Rendering.BlendMode的数值:

    namespace UnityEngine.Rendering
    
    {
    
        //
    
        // 摘要:
    
        //     Blend mode for controlling the blending.
    
        public enum BlendMode
    
        {
    
            //
    
            // 摘要:
    
            //     Blend factor is (0, 0, 0, 0).
    
            Zero = 0,
    
            //
    
            // 摘要:
    
            //     Blend factor is (1, 1, 1, 1).
    
            One = 1,
    
            //
    
            // 摘要:
    
            //     Blend factor is (Rd, Gd, Bd, Ad).
    
            DstColor = 2,
    
            //
    
            // 摘要:
    
            //     Blend factor is (Rs, Gs, Bs, As).
    
            SrcColor = 3,
    
            //
    
            // 摘要:
    
            //     Blend factor is (1 - Rd, 1 - Gd, 1 - Bd, 1 - Ad).
    
            OneMinusDstColor = 4,
    
            //
    
            // 摘要:
    
            //     Blend factor is (As, As, As, As).
    
            SrcAlpha = 5,
    
            //
    
            // 摘要:
    
            //     Blend factor is (1 - Rs, 1 - Gs, 1 - Bs, 1 - As).
    
            OneMinusSrcColor = 6,
    
            //
    
            // 摘要:
    
            //     Blend factor is (Ad, Ad, Ad, Ad).
    
            DstAlpha = 7,
    
            //
    
            // 摘要:
    
            //     Blend factor is (1 - Ad, 1 - Ad, 1 - Ad, 1 - Ad).
    
            OneMinusDstAlpha = 8,
    
            //
    
            // 摘要:
    
            //     Blend factor is (f, f, f, 1); where f = min(As, 1 - Ad).
    
            SrcAlphaSaturate = 9,
    
            //
    
            // 摘要:
    
            //     Blend factor is (1 - As, 1 - As, 1 - As, 1 - As).
    
            OneMinusSrcAlpha = 10
    
        }
    
    }

     

    Blend operation的可以参考UnityEngine.Rendering.BlendOp

        public enum BlendOp
    
        {
    
            //
    
            // 摘要:
    
            //     Add (s + d).
    
            Add = 0,
    
            //
    
            // 摘要:
    
            //     Subtract.
    
            Subtract = 1,
    
            //
    
            // 摘要:
    
            //     Reverse subtract.
    
            ReverseSubtract = 2,
    
            //
    
            // 摘要:
    
            //     Min.
    
            Min = 3,
    
            //
    
            // 摘要:
    
            //     Max.
    
            Max = 4,
    
                             ...
    
    }

    看完以上内容来思考这个问题:

    那么Blend Off 是不是等于 Blend One Zero呢?

    也就是 shader计算的颜色+0

     

     

    獾方文档

    https://docs.unity3d.com/Manual/SL-Blend.html

     

    展开全文
  • [DirectX]Programming.Role.Playing.Games:02_03_AlphaBlend代码
  • Alpha Blend 透明混合使用当前片元的透明度作为混合因子,与已存储在颜色缓冲中的颜色值进行混合,得到新的颜色。需要注意的是,透明度混合需要关闭深度写入,这时候要注意物体的渲染顺序。 源颜色(当前片元颜色)...

    Alpha Blend

    透明混合使用当前片元的透明度作为混合因子,与已存储在颜色缓冲中的颜色值进行混合,得到新的颜色。需要注意的是,透明度混合需要关闭深度写入,这时候要注意物体的渲染顺序。

    • 源颜色(当前片元颜色)source colorS或者SrcColor表示
    • 目标颜色(颜色缓冲中的颜色)destination colorD或者DstColor表示

    官方文档:

    https://docs.unity3d.com/Manual/SL-Blend.html

    语义:

    首先,需要正确设置渲染队列:

    Tags { "Queue"="Transparent" }
    

    其次,需要关闭ZWrite

    ZWrite Off
    

    然后,可以指定混合函数,如:

    Blend SrcAlpha OneMinusSrcAlpha
    
    语义描述
    Blend Off关闭混合
    Blend SrcFactor DstFactor开启混合,并设置混合因子。源颜色(片元颜色)乘以SrcFactor。而目标颜色(颜色缓存中的颜色)乘以DstFactor,将两者相加后存入颜色缓存。
    Blend SrcFactor DstFactor,SrcFactorA DstFactorA和上面一样,只是使用不同的混合因子来混合透明通道
    BlendOp BlendOperation不是把源颜色和目标颜色简单相加后混合,而是使用BlendOperation对它们进行其他操作

    Blend operations 常用混合操作

    Add将源和目标添加在一起。
    Sub从源中减去目标。
    RevSub从目标中减去源。
    Min使用较小的源和目标。
    Max使用较大的源和目标。

    Blend factors 混合因子

    以下所有属性在Blend命令中都适用于SrcFactor&DstFactor。 源指的是计算的颜色,目标是已经在屏幕上的颜色。
    如果BlendOp使用逻辑运算,则忽略混合因子。

    One1 - 使用它让源或目标颜色完全通过
    Zero The0 - 使用此值删除源或目标值
    SrcColor源的Color(RGB)值
    SrcAlpha源的Alpha(a)值
    DstColor目标的Color(RGB)值
    DstAlpha目标的Alpha(a)值
    OneMinusSrcColo1 - source color.
    OneMinusSrcAlpha1 - source alpha.
    OneMinusDstColor1 - destination color.
    OneMinusDstAlpha1 - destination alpha.

    最常见的混合类型:

    Blend SrcAlpha OneMinusSrcAlpha // Traditional transparency 最常用的透明度混合
    Blend One OneMinusSrcAlpha // Premultiplied transparency 预乘透明度
    Blend One One // Additive 叠加的
    Blend OneMinusDstColor One // Soft Additive 软叠加 
    Blend DstColor Zero // Multiplicative
    Blend DstColor SrcColor // 2x Multiplicative 两倍相乘 (2X Multiply) 
    BlendOp Min //变暗
    BlendOp Max //变亮
    

    测试

    Shader代码如下:

    Shader "Custom/l2xin/T_AlphaBlend"
    {
        Properties 
        {
            _MainTex ("Albedo (RGB)", 2D) = "white" {}
        }
        
        SubShader
        {
            Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
            
            Pass
            {
                Tags { "LightMode"="ForwardBase" }
                
                //Alpha Blend
                Blend SrcAlpha OneMinusSrcAlpha
                
                CGPROGRAM
    
                
                #pragma vertex vert
                #pragma fragment frag
                
                #include "Lighting.cginc"
                
                sampler2D _MainTex;
                float4 _MainTex_ST;         
                
                struct a2v{
                    float4 vertex : POSITION;
                    float4 texcoord: TEXCOORD0;
                };
                
                struct v2f{
                    float4 pos : SV_POSITION;
                    float2 uv : TEXCOORD0;
                };
                
                v2f vert(a2v v){
                    v2f o;
                    o.pos = UnityObjectToClipPos(v.vertex);
                    o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                    return o;
                }
                
                fixed4 frag(v2f i) :SV_Target{
                    fixed4 texColor = tex2D(_MainTex, i.uv);
                    return texColor;
                }
            
                ENDCG
            }
        }
        FallBack "Diffuse"
    }
    

    Blend SrcAlpha OneMinusSrcAlpha(最常用的半透明效果)

    Blend SrcAlpha OneMinusSrcAlpha

    更多展示效果

    转自:风宇冲Unity3D教程学院 http://blog.sina.com.cn/s/blog_471132920101d8z5.html

    在树叶使用的Shader中添加Blend代码

    • Blend zero one:仅显示背景的RGB部分,无Alpha透明通道处理。
      Blend zero one

    • Blend one zero: 仅显示贴图的RGB部分,无Alpha透明通道处理。 A通道为0即本应该透明的地方也渲染出来了。
      在这里插入图片描述

    • Blend one one:贴图和背景叠加,无Alpha透明通道处理。仅仅是颜色rgb数值的叠加更趋近于白色即(1,1,1)了。
      在这里插入图片描述

    • Blend SrcAlpha zero:仅仅显示贴图,贴图含Alpha透明通道处理。但是贴图中的透明部分,即下图黑色部分没有颜色来显示,因为源颜色乘以alpha值0,为0;而混合目标的颜色乘以zero 0,也是0。所以透明部分显示的颜色为(0,0,0)
      在这里插入图片描述

    • Blend SrcAlpha OneMinusSrcAlpha:
      最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)
      最常用的透明混合方式。贴图alpha值高的部分,显示得实,而混合的背景很淡。而alpha值高的部分,贴图显示得淡,而背景现实得实。
      在这里插入图片描述

    后记-AlphaTest和AlphaBlend性能

    Unity的官方文档中,提到了它们的性能问题——https://docs.unity3d.com/Manual/SL-ShaderPerformance.html

    Fixed function AlphaTest or it’s programmable equivalent, clip(), has different performance characteristics on different platforms:

    • Generally it’s a small advantage to use it to cull out totally transparent pixels on most platforms.
    • However, on PowerVR GPUs found in iOS and some Android devices, alpha testing is expensive. Do not try to use it as “performance optimization” there, it will be slower.

    总结一下,就是使用Alpha Test看似更简单,但其实在大多数平台上,相比与Alpha Blending,只有一点小小的性能提升。但是!!!在iOS和某些Android设备上,由于它们使用了PowerVR GPUs,因此Alpha Test的性能消耗反而会更大。因此,一个忠告就是,尽可能使用Alpha Blending,而不要使用Alpha Test

    我们会觉得很奇怪,没有关闭深度缓存,不需要计算混合颜色,仅仅调用来discard舍弃fragment不是非常简单的事吗?为什么在移动平台上反而效率更低呢?有句话叫,“简单粗暴”,可以用在这里。性能下降的原因就是它太粗暴了!(我乱说的你不要当真。。。)

    好啦,言归正传~原因呢,就是之前提到的两遍检验。由于我经验有限,只能依靠强大的谷歌来找答案。我找到了这里、这里。总结一下,就是PowerVR GPUs使用了一种叫做“Deferred Tile-Based-Rendering”的技术。这种技术里有一个优化阶段,就是为了减少overdraw它会在调用fragment shader前判断哪些Tile是会被真正渲染的。也就说我们之前说的在FS之前做的“Depth Test”。但是,由于Alpha Test在fragment shader里使用了clip函数改变了fragment是否被渲染的结果,因此,GPUs就无法使用上述的优化策略了。也就是说,只要在完成了所有的fragment shader处理后,GPUs才知道哪些fragments会被真正渲染到屏幕上,这样,原先那些可以减少overdraw的优化就都无效了。

    这一段摘自乐乐女神的博客:https://blog.csdn.net/candycat1992/article/details/41599167 。我也没有理解到位,总之结论是尽可能使用Alpha Blending就对了。。


    参考

    展开全文
  • 图像处理: AlphaBlend

    千次阅读 2019-06-13 10:26:51
    AlphaBlend(D, cr, alpha); alpha blend的计算公式很简单, D= cr*alpha + D*(1-alpha) D表示原始底色,可以是向量,如RGB,为了减少计算量,一般计算方式是, R = (cr.r – R)*alpha>>8 + R G= (cr.g –...

    AlphaBlend(D, cr, alpha);

    alpha blend的计算公式很简单,

    D = cr*alpha + D*(1-alpha)

    D表示原始底色,可以是向量,如RGB,为了减少计算量,一般计算方式是,

    R = (cr.r – R)*alpha>>8 + R
    G = (cr.g – G)*alpha>>8 + G
    B = (cr.b – B)*alpha>>8 + B

    这里alpha因为是0到255的取值范围,所以需要>>8,

    上式相当于alpha取小数范围(0~1)时,是D = (cr – D)*alpha + D,不过程序 中不推荐这么做,因为大量的浮点运算要更耗时间。

    展开全文
  • 庄懂技术美术入门课笔记_L13_特效类shader特效类shader概述各类混合方式(透切、透混、透叠)的比较透切: AlphaCutout(AC)透混:AlphaBlend (AB)透叠:Additive(AD)代码透切: AlphaCutout透混:AlphaBlend透叠...
  • Blend命令,透明度混合才能生效!!!! 在这里插入图片描述 ZWrite可以取的值为:On/Off,默认值为On,代表是否要将像素的深度写入深度缓存中(同时还要看ZTest是否通过)。 ZTest可以取的值为:Greater/
  • DirectX编程:Alpha混合示例程序
  • 背景 自己使用VC和VS写过很多小游戏,而且不是用现成的游戏引擎,纯粹是使用GDI函数来进行绘图。所以,积累了一些绘图的经验。...在没有了解 AlphaBlend 函数之前,绘制半透明位图都是获取两张图片...
  • 背景 自己使用VC和VS写过很...在没有了解 AlphaBlend 函数之前,绘制半透明位图都是获取两张图片的RGB数据,然后按指定透明度计算出混合后的RGB的值,再显示出来。这样,需要自己计算的过程,算是麻烦。而现在,Al...
  • TransparentBlt+AlphaBlend透明、半透明、圆角半透明显示BMP图片
  • AlphaTest & AlphaBlend 前言 透明度测试 :它采用一种“霸道极端”的机制,只要一个片元的透明度不满足条件(通常是小于某个阈值),那么它对应的片元就会被舍弃。被舍弃的片元将不会再进行任何处理,也...
  • 使用AlphaBlend函数生成透明启动画面的示例应用程序
  • Alpha融合和图片透明度[AlphaBlend]

    千次阅读 2017-12-12 16:29:40
    Alpha融合,不论是在3D还是2D中都常见,最常见的应用就是:设置图片的透明度,不透明度,可以实现抠图。   其实现思想如下: 有个混合因子,主要是颜色混合: 浮点表示:0.0f 整数表示: 0x00 分开...
  • YUV图像格式进行的ALPHA BLEND操作 RGB的alpha blend操作采用如下的公式: 假设 r0 g0 b0 为原始图像的 三个色彩分量, r1 g1 b1 为alpha blend过程中需要叠加上去的对应的三个色彩分量, 假设alpha通道值为 a 那么:...
  • AlphaBlend 详解

    千次阅读 2013-08-18 23:30:09
    AlphaBlend    该函数显示拥有透明或半透明像素的位图。  Syntax BOOL AlphaBlend(  HDC hdcDest,  int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest,  HDC hdcSrc, ...
  • Unity Shader Alpha Blend 填坑记录

    千次阅读 2018-10-17 00:05:47
    Unity Shader 中对Alpha的控制分为两种 1 AlphaTest 透明测试.设定一个值,使其超过这个值便舍弃掉.并不是真正的透明效果 2 Blend 透明度混合.通过参数来调整透明度,真正的透明效果. 我们主要来说下Blend. Blend...
  • AlphaBlend

    2014-06-01 12:09:00
    AlphaBlend实现透明效果,只是仅仅能针对某块区域进行alpha操作,透明度可设。 TransparentBlt能够针对某种颜色进行透明,只是透明度不可设。   AlphaBlend: BLENDFUNCTION bn; bn.AlphaFormat = 0...
  • 半透明AlphaBlend

    2019-10-07 15:23:45
    AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图。 函数原型: BOOL AlphaBlend( HDC hdcDest, // handle to destination DC int nXOriginDest, // x-coord of upper-left corner ...
  • 近来小弟研究AlphaBlend算法,即透明框在TQ2440+4.3寸屏上的显示透明框问题。几经周转 总结如下: 混合算法目前在常用到的算法是AlphaBlend。所谓Alpha-Blending,其实就是按照“Alpha”混合向量的值来混合源...
  • AlphaBlend简析函数功能:该函数用来显示透明或半透明像素的位图。 函数原型:BOOL AlphaBlend( HDC hdcDest, // handle to destination DC int nXOriginDest, // x-coord of upper-left corner int ...
  • 解决Unresolved external ‘AlphaBlend’ referenced的办法 安装了EhLib,控件可以使用了,但是编译时报“[Linker Error] Unresolved external ‘AlphaBlend’ referenced from D:\WORK PROGRAM FILES\BORLAND\C...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,411
精华内容 6,164
关键字:

alphablend

友情链接: fastadmin-html.zip