2013-08-23 28 views
0

在过去,我一直制作自己的精灵片,并且让它们变得透明。但我总是看到一个粉红色的精灵作为背景。你会如何在游戏中把它关键?如何从精灵表中删除背景?

哪个更好?使用透明的.png文件?或有一个坚实的背景色?

enter image description here

如果你想知道,我用的是BufferedImage类和我getSubImage。

+2

就个人而言,透明的PNG比较容易,但加载时,它可能需要更多的处理,但后来,我不需要照顾它。 – MadProgrammer

+1

您的最终目标是让您的精灵的背景变得透明,还是开发一款能够做到这一点的软件? – jsedano

+0

有时编辑显示透明作为一个办法把单色的图像中透明的替代颜色/图案 – BevynQ

回答

0

如果您使用库不介意,我使用LWJGL,并使用texturepacker使spritesheets。

Texturepacker自动生成纹理的XML文件,并把纹理都在一个PNG。

一旦我这样做,我用GIMP,只是使用橡皮擦工具,直至背景是透明的。

然后在你的程序,你只需输入

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

和透明度应自动工作,更多的是痛苦的它有点实际设置访问spritesheets和这样虽然

2

通常会有三种方法可以使精灵透明,或者使用一个单独的alpha通道,通过使用单独的位掩码,或者只是使用透明的颜色。后者通常与索引颜色一起使用,因为它非常简单,只需使用透明度替换其中一个索引(在您的情况下为粉红色)。

我用这种技术看到的唯一优点是保存内存。但我没有做了很多比赛,所以有可能是其他原因,这样做的.. ;-)

+0

这种方法的缺点是它只适用于1位透明。 “真实”PNG透明度可以是1位 - 开或关 - 或全8位范围。不过,它增加了一个全新的颜色通道,所以只有在需要*可变透明度时才使用它。 – usr2564301