服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用mascot capsule micro3d v3 api实现透明效果

mascot capsule micro3d v3 api支持颜色掩盖和四种纹理与背景颜色混合模式。

当混合颜色时,来自背景rgb值和来自纹理的rgb颜色单独的混合。请注意,half(一半)、addition(相加)和subtract(相减)模式不能同时作用于同一个多边形。

下面的表格显示了背景和纹理的颜色是如何混合在一起的。

属性

背景

纹理

normal(正常)

0%

+100%

half(一半)

50%

+50%

add(相加)

100%

+100%

sub(相减)

100%

-100%

可以使用下面命令中的一个来完成颜色混合:

graphics3d.pattr_blend_normal

graphics3d.pattr_blend_half

graphics3d.pattr_blend_add

graphics3d.pattr_blend_sub

 

// 示例命令

private final int command = graphics3d.pdata_normal_none |

graphics3d.pdata_texure_coord |

graphics3d.primitve_quads |

graphics3d.pattr_blend_half;

别忘了使用透明度设置效果:

     effect.settransparency (true);

掩盖的实现同样简单。只需使用graphics3d.pattr_colorkey命令,然后结合在图片所使用的调色板中的一个给定值0,就可以掩盖出第一种颜色。

当掩盖颜色时,你不能使用透明度设置效果。

下面的ghost图片展示了当分别使用1)normal、2)pattr_colorkey和3)pattr_blend_half | pattr_colorkey时不同的效果。

使用mascot capsule micro3d v3 api实现透明效果(图一)使用mascot capsule micro3d v3 api实现透明效果(图二)使用mascot capsule micro3d v3 api实现透明效果(图三)
  normal(正常,没有混合)  使用掩盖(colorkey) 

 使用一半混合和掩盖(colorkey

本文以及例子都比较简单,不再做分析。另外,我们可以修改keypressed()方法,观察每一种混合属性和pattr_colorkey的单独效果,修改后程序如下:

public void keypressed(int key) {

           if (key == -6) {

                  index = index == 4 ? 0 : index + 1;

                  if (index == 0) {

                  // 去掉前一种的混合效果

                         command ^= graphics3d.pattr_blend_add;

// 正常模式

                         command |= graphics3d.pattr_blend_normal;

                  } else if (index == 1) {

                         command ^= graphics3d.pattr_blend_normal;

                 // 使用colorkey

                         command |= graphics3d.pattr_colorkey;

                  } else if (index == 2){

                         command ^= graphics3d.pattr_colorkey;

                 // 一半的混合模式

                         command |= graphics3d.pattr_blend_half;

                  } else if (index == 3){

                         command ^= graphics3d.pattr_blend_half;

                 // 相减的混合模式

                         command |= graphics3d.pattr_blend_sub;

                  } else if (index == 4){

                         command ^= graphics3d.pattr_blend_sub;

                 // 相加的混合模式

                         command |= graphics3d.pattr_blend_add;

                  }

           }

    }

 

下载范例程序和源代码

 

扫描关注微信公众号