博客
关于我
2016年1月15日(DEMO12-2ALPHA混合。)
阅读量:784 次
发布时间:2019-03-25

本文共 1278 字,大约阅读时间需要 4 分钟。

alpha混合是一种常见的图形学操作,用于结合两个图像的模糊效果。在这里,我们将详细阐述alpha混合的计算方式及其应用。

alpha混合的核心思想是基于透明度(alpha值)来混合源图像(src1)和辅助图像(src2)。混合过程遵循公式:

  • Final = src1 * alpha + src2 * (1 - alpha)

这个公式适用于每个RGB分量的处理,从而实现颜色混合效果的分解。

alpha查找表的创建

创建alpha查找表的过程如下:

  • 将颜色值视为5.6.5格式,从中提取RGB分量。
  • 将每个分量与alpha值相乘:
    • R = r * alpha
    • G = g * alpha
    • B = b * alpha
  • 根据RGB分量生成一个16位的颜色字,并存储到查找表中,与原始颜色值对应的位置。
  • DDD RAW Liushui Xian Texture::RGB Alpha Table Builder 功能函数

    该函数用于创建alpha查找表,其参数包含:

    int RGB_Alpha_Table_Builder(int num_alpha_levels,//数级数

    // 检查指针是否有效if (!rgb_alpha_table) {    return -1;}// 用于存储从rgbindex中提取的RGB分量int r, g, b;// 用于存储alpha值float alpha = 0;float delta_alpha = EPSILON_E6 + 1 / ((float) (num_alpha_levels - 1));// 遍历所有alpha数级for (int alpha_level = 0; alpha_level < num_alpha_levels; alpha_level++) {    // 遍历所有颜色索引    for (int rgbindex = 0; rgbindex < 65536; rgbindex++) {        // 从rgbindex中提取RGB分量        _RGB565From16Bit(rgbindex, r, g, b);                // 计算乘积        r = (int) (r * alpha);        g = (int) (g * alpha);        b = (int) (b * alpha);                // 生成新的RGB值并存储到查找表中        rgb_alpha_table[alpha_level][rgbindex] = _RGB16Bit565(r, g, b);    }        // 计算下一个alpha值    alpha += delta_alpha;}return 1;

    }

    具体来说,该函数通过对源图像和辅助图像的每个颜色索引提取RGB分量并应用alpha值,生成新的定制颜色字,存储在查找表中。通过逐步递增alpha值,可以覆盖所有可能的透明度组合。

    转载地址:http://fyauk.baihongyu.com/

    你可能感兴趣的文章
    Navicat因导入的sql文件中时间数据类型有参数而报错的原因(例:datetime(3))
    查看>>
    Navicat如何连接MySQL
    查看>>
    navicat导入.sql文件出错2006- MySQLserver has gone away
    查看>>
    Navicat导入海量Excel数据到数据库(简易介绍)
    查看>>
    Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)
    查看>>
    navicat工具查看MySQL数据库_表占用容量_占用空间是多少MB---Linux工作笔记048
    查看>>
    navicat怎么导出和导入数据表
    查看>>
    Navicat报错connection is being used
    查看>>
    Navicat报错:1045-Access denied for user root@localhost(using passwordYES)
    查看>>
    Navicat控制mysql用户权限
    查看>>
    navicat操作mysql中某一张表后, 读表时一直显示正在载入,卡死不动,无法操作
    查看>>
    Navicat连接mysql 2003 - Can't connect to MySQL server on ' '(10038)
    查看>>
    Navicat连接mysql数据库中出现的所有问题解决方案(全)
    查看>>
    Navicat连接Oracle出现Oracle library is not loaded的解决方法
    查看>>
    Navicat连接Oracle数据库以及Oracle library is not loaded的解决方法
    查看>>
    Navicat连接sqlserver提示:未发现数据源名并且未指定默认驱动程序
    查看>>
    navicat连接远程mysql数据库
    查看>>
    Navicat通过存储过程批量插入mysql数据
    查看>>
    Navicat(数据库可视化操作软件)安装、配置、测试
    查看>>
    navigationController
    查看>>