作者: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;
}
}
}
下载范例程序和源代码
下载范例程序和源代码