Вам нужно обрезать область рисования, если желаемое разрешение не соответствует соотношению сторон вашей игры.
Под вашей процедурой рендеринга вы должны вычислить правильный видовой экран
@Override
public void render() {
[...]
// set viewport
Gdx.gl.glViewport((int) _viewport.x, (int) _viewport.y,
(int) _viewport.width, (int) _viewport.height);
[...]
}
Чтобы вычислить правильный видовой экран, вы можете использовать эту функцию (я написал эту функцию для моего игрового движка на основе libgdx)
- ширина: текущая ширина окна,
- высота: текущая высота окна,
- virtualHeight / Width: исходное разрешение вашей игры (т.е. 1920x1080)
public Rectangle resize(float width, float height){
float aspectRatio = (float)width/(float)height;
float scale = 1.0f;
Vector2 crop = new Vector2(0f, 0f);
if(aspectRatio > getAspectRatio())
{
scale = (float)height/(float)getVirtualLandHeight();
crop.x = (width - getVirtualLandWidth()*scale)/2f;
}
else if(aspectRatio < getAspectRatio())
{
scale = width/(float)getVirtualLandWidth();
crop.y = (height - getVirtualLandHeight()*scale)/2f;
}
else
{
scale = (float)width/(float)getVirtualLandWidth();
}
float w = (float)getVirtualLandWidth()*scale;
float h = (float)getVirtualLandHeight()*scale;
Rectangle viewport = new Rectangle(crop.x, crop.y, w, h);
return viewport;
}
public float getAspectRatio(){
return getVirtualLandWidth() / getVirtualLandHeight();
}