GBA颜色特效的设置方法(转)

GBA颜色特效的设置方法(转)[@more@]

  Alpha混合 与 淡入淡出

  这里是说明GBA的颜色特效的设置方法,如果有什么说得不好的请大家多包含。

  有什么说错的东西的地址就要大家帮我改改了。

  

  Alpha混合:对两个选择的表面执行16级的半透明处理。

  淡入淡出:对一个选择的表面执行16级的亮度处理。

  

  这几个效果的目标由BLDMOD寄存器指定的

  地址:0x4000050h寄存器:BLDMOD属性:读/写初始值:0x00h

  ____________________________________________________________________

  │15│14│13│12│11│10│9│ 8│ 7│ 6│5│4 │ 3│ 2│1│ 0│

  │ X│X │F │E │ D│ C│B│ A│Y │ Y│F│E │ D│ C│B│ A│

  

  底8位是第一目标,高8位为第二目标

  A:BG0

  B:BG1

  C:BG2

  D:BG3

  E:OBJ

  F:BD(底幕)

  

  YY = 00

  没有特效:通常不执行特效,只有存有半透明OBJ并且是紧随在第二目标之后就执行16级半

  透明处理。

  

  YY = 01

  Alpha混合:如果第一上目标紧随在第二目标之后,执行16级半透明度处理。当第一目标的

  OBJ位为1,

  对全部OBJ执行半透明处理,为0时只对半透明OBJ进行处理。

  

  YY = 10

  亮度增加:增加第一目标的亮度。当第一目标的OBJ位为1时,只对OBJ增加亮度。

  当一个半透明OBJ有第一目标,总是会执行Alpha混合

  

  YY = 11

  亮度减少:减少第一目标的亮度。当第一目标的OBJ位为1时,只对OBJ减少亮度。

  当一个半透明OBJ有第一目标,总是会执行Alpha混合

  

  虽然可以通过BLDMOD寄存器来指定要操作的目标表面,但是这两个表面还要配合图层的优先

  权限来设置。

  另外,半透明OBJ是由OAM指定的,而BLDMOD是对全部OBJ有效。

  

  

  颜色系数

  Alpha混合的系数是由COLEV寄存器里的EVA和EVB决定的。亮度系数是由COLY寄存器里的EVY指定

  的。

  EVA、EVB和EVA的值是少于1的数,由一个整数乘以1/16所得到的。这个可能有些难明,要好好地

  去领悟领悟。

  

  地址:0x4000052h寄存器:COLEV属性:只写初始值:0x00h

  ____________________________________________________________________

  │15│14│13│ 12│11│10│ 9 │ 8 │ 7│ 6│5│ 4│ 3 │ 2 │ 1 │ 0 │

  │X │X │X │ B │B │B │B │B │X │X │X│A │A │A │A │ A │

  

  B为EVB

  A为EVA

  

  地址:0x4000054h寄存器:COLY属性:只写初始值:0x00h

  ____________________________________________________________________

  │15│14│13│12│11│10│ 9 │ 8 │7│6│5│4│3│2│1│0│

  │X │X │X │X │X │X │ X │ X │X│X│X│Y│Y│Y│Y│Y│

  

  Y为EVY

  

  EVA、EVB、EVY的值与系数对应关系:

  EVA、EVB、EVY的值系数

  000000

  000011/16

  000102/16

  000113/16

  001004/16

  001015/16

  001106/16

  001117/16

  010008/16

  010019/16

  0101010/16

  0101111/16

  0110012/16

  0110113/16

  0111014/16

  0111115/16

  1XXXX16/16

  

  

  公式如下:

  Alpha混合:

  显示颜色(R)=第一目标象素(R) * EVA + 第二颜色象素(R) * EVB

  显示颜色(G)=第一目标象素(G)* EVA + 第二颜色象素(G) * EVB

  显示颜色(B)=第一目标象素(B)* EVA + 第二颜色象素(B) * EVB

  

  亮度增加:

  显示颜色(R)=第一目标象素(R) +(31 - 第二颜色象素(R))* EVY

  显示颜色(G)=第一目标象素(G) +(63 - 第二颜色象素(G))* EVY

  显示颜色(B)=第一目标象素(B) +(31 - 第二颜色象素(B))* EVY

  

  亮度减少:

  显示颜色(R)=第一目标象素(R) - 第二颜色象素(R)* EVY

  显示颜色(G)=第一目标象素(R) - 第二颜色象素(G)* EVY

  显示颜色(B)=第一目标象素(B) - 第二颜色象素(B)* EVY

  

  好了,要说的都说完了,怎样实现就要自己想办法了,这里就不给出例子啦

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-951713/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-951713/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值