LibGDX。 Android系统。在透明DecalSprites的黑背景

时间:2014-08-14 15:41:51

标签: android opengl-es 3d libgdx sprite

在我的App中,我使用了几个DecalSprites作为我场景的一部分。它们都具有透明度(PNG纹理)。当我重叠它们时,其中一些显示黑色背景而不是透明度。那些DecalSprites有不同的Z坐标。所以他们应该看起来像一个又一个。

enter image description here

请注意纹理边框上的线条。这也是我正在努力消除的事情。

更新1:我在场景中使用了PerspectiveCamera。但是所有贴花都定位为在2d模式下面向相机。因此,这种“黑色”背景仅在某些情况下出现,例如当相机向右移动时(所有这些贴花出现在场景的左侧)。我也使用CameraGroupStrategy

1 个答案:

答案 0 :(得分:1)

解决!原因是CameraGroupStrategy在订购贴花时(从最远到最接近相机)采用"组合"相机和贴花之间的矢量距离。当我的相机向左或向右平移时,到Z最远贴花的距离变得比Z-close贴花少。这产生了神器。修正:

GroupStrategy strategy = new CameraGroupStrategy(cam , new ZStrategyComparator());

比较者:

    private class ZStrategyComparator implements Comparator<Decal> {

    @Override
    public int compare (Decal o1, Decal o2) {
        float dist1 = cam.position.dst(0, 0, o1.getPosition().z);
        float dist2 = cam.position.dst(0, 0, o2.getPosition().z);
        return (int)Math.signum(dist2 - dist1);
    }

}

感谢所有试图提供帮助的人。特别是Xoppa。他把我送到了libGDX IRC的正确方向。