Android上的libGDX / Box2DLights色带

时间:2016-04-02 05:15:52

标签: android libgdx render light box2dlights

我在我的一个项目中使用Box2DLights。我在这个项目上工作了几个月,我只是尝试在Android上移植它,看它看起来如何。 虽然在桌面版游戏中光效看起来非常不错,但在Android版本上看起来真的很难看。光梯度根本不光滑,具有色带效果。以下是桌面和Android版本的屏幕截图: enter image description here

要在我的游戏中使用Box2DLights,我在GameScreen中使用此代码:

RayHandler.useDiffuseLight(true); 
rayHandler = new RayHandler(world); 
rayHandler.resizeFBO(Gdx.graphics.getWidth()/5, Gdx.graphics.getHeight()/5); 
rayHandler.setBlur(true);   
rayHandler.setAmbientLight(new Color(0.15f, 0.15f, 0.15f, 0.1f));

我还尝试使用不同的参数,例如:

rayHandler.diffuseBlendFunc.set(GL20.GL_DST_COLOR, GL20.GL_SRC_COLOR);

或者

rayHandler.shadowBlendFunc.set(GL20.GL_DST_COLOR, GL20.GL_SRC_COLOR);

或者

Gdx.gl.glEnable(GL20.GL_DITHER);

我不知道这有什么帮助,但这里有其他精确性:

  • 我的图块集是在Photoshop上制作的,并以RGB,8位/通道模式记录为PNG文件
  • 在我的2台Android设备上观察到此效果:
    • 平板电脑Transformer Prime TF701与Android 4.2.1
    • LG G Stylo with Android 5.0.2

谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

以下是解决方案:

问题与Android上的低位深度有关。 如果您查看AndroidApplicationConfiguration.java的代码,您会在第30和31行注意到此代码:

/** number of bits per color channel **/
public int r = 5, g = 6, b = 5, a = 0;

因此,默认情况下,使用libGDX的Android应用程序渲染低位图像。这可以在您的应用程序的 AndroidLauncher.java 中轻松修改。

您应用的默认AndroidLauncher.java如下所示:

public class AndroidLauncher extends AndroidApplication {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        initialize(new MyGdxGame(), config);
    }
}

您需要做的就是为您的Android应用程序提供RGBA8888的渲染格式:

public class AndroidLauncher extends AndroidApplication {
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
        config.r = 8;
        config.g = 8;
        config.b = 8;
        config.a = 8;
        initialize(new MyGdxGame(), config);
    }
}

Etvoilà! 这是Android RGB565 VS Android RGBA8888 VS桌面的比较截图: enter image description here

您可以看到Android RGBA8888非常接近桌面版。