Android上的libGDX/box2dlight色带
我正在我的一个项目中使用Box2Lights。我在这个项目上工作了两个月,我只是试着把它移植到Android上,看看它看起来怎么样。 虽然灯光效果在桌面版的游戏中看起来很不错,但在安卓版上却很难看。灯光渐变一点也不平滑,带有色带效果。以下是桌面和android版本的屏幕截图: 要在游戏中使用Box2Lights,我在游戏屏幕中使用以下代码:Android上的libGDX/box2dlight色带,android,libgdx,render,light,box2dlights,Android,Libgdx,Render,Light,Box2dlights,我正在我的一个项目中使用Box2Lights。我在这个项目上工作了两个月,我只是试着把它移植到Android上,看看它看起来怎么样。 虽然灯光效果在桌面版的游戏中看起来很不错,但在安卓版上却很难看。灯光渐变一点也不平滑,带有色带效果。以下是桌面和android版本的屏幕截图: 要在游戏中使用Box2Lights,我在游戏屏幕中使用以下代码: RayHandler.useDiffuseLight(true); rayHandler = new RayHandler(world); rayHa
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);
或
或
我不知道这有什么帮助,但这里有其他精度:
- 我的tileset是在Photoshop上制作的,并以RGB模式记录为PNG文件,8位/通道
- 在我的两台Android设备上观察到了这种影响,它们是:
- 使用Android 4.2.1的Tablet Transformer Prime TF701
- 带安卓5.0.2的LG G Stylo
/** 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);
}
}
瞧!
以下是Android RGB565与Android RGBA888与桌面的对比截图:
您可以看到Android RGBA8888非常接近桌面版本
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGdxGame(), config);
}
}
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);
}
}