Witam. Mam funkcję do skalowania widoku w SFML 3.0.2. Funkcja działa w ten sposób, że rozciąga obraz w taki sposób, by zachowane zostały proporcje. (czyli są czarne pasy poza widokiem). Jak to zrobić w Javie libGDx? Obecnie tak skaluje ... czyli nie skaluje w ogóle. Pewnie, że i można skalować sprajty no ale kod będzie wtedy gorszej jakości :-/

void setScreenView(sf::View& view)
{
float windowRatio = float(window->getSize().x) / float(window->getSize().y);
float viewRatio = float(view.getSize().x) / float(view.getSize().y);
float sizeX = 1.f;
float sizeY = 1.f;
float posX = 0.f;
float posY = 0.f;
if (windowRatio > viewRatio) {
sizeX = viewRatio / windowRatio;
posX = (1.f - sizeX) / 2.0f;
}
// wyższe niż widok → paski poziome
else {
sizeY = windowRatio / viewRatio;
posY = (1.f - sizeY) / 2.0f;
}
view.setViewport(sf::FloatRect(posX, posY, sizeX, sizeY));
window->setView(view);
}
package com.tbane.mysticgems;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.Texture;
public class Renderer {
public static SpriteBatch batch = new SpriteBatch();
public static int VIRTUAL_WIDTH = 720;
public static int VIRTUAL_HEIGHT = 1612;
public static OrthographicCamera camera;
public static Viewport viewport;
public void create() {
camera = new OrthographicCamera();
viewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, camera);
camera.position.set(VIRTUAL_WIDTH / 2f, VIRTUAL_HEIGHT / 2f, 0);
camera.update();
batch = new SpriteBatch();
}
public void resize(int width, int height) {
viewport.update(width, height);
camera.position.set(VIRTUAL_WIDTH / 2f, VIRTUAL_HEIGHT / 2f, 0);
camera.update();
batch = new SpriteBatch();
}
public static void begin() {
batch.begin();
}
public static void end() {
batch.end();
}
}