使用Mascot Capsule Micro3D V3 API实现透明效果

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

作者:mydeman 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=810

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时不同的效果。

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;

}

}

}

下载范例程序和源代码

下载范例程序和源代码

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航