Recherche…


Fenêtres

Pour prendre en charge plusieurs résolutions et formats d'image, Libgdx utilise les " Viewports .
Il existe quelques types de Viewports qui utilisent différentes stratégies pour gérer plusieurs résolutions et rapports d'aspect.
Un Viewport utilise un Camera sous le capot et gère viewportHeight et viewportWidth . Vous pouvez éventuellement donner à la Viewport une Camera dans son constructeur, sinon elle utilisera une OrthographicCamera par défaut:

private Viewport viewport;
private Camera camera;

public void create() {
   camera = new PerspectiveCamera();
   viewport = new FitViewport(8f, 4.8f, camera);
}  

De plus, vous devez spécifier worldWidth et worldHeight au worldHeight de la fenêtre. Cet espace représentera le système de coordonnées virtuel que vous utiliserez pour spécifier la position des objets à dessiner et leurs tailles. La transformation de fenêtre d'affichage, qui peut être appliquée à un SpriteBatch, par exemple, se chargera automatiquement de transformer les coordonnées logiques en coordonnées d'écran réelles, d'une manière conforme au type de fenêtre que vous utilisez. Par exemple, lorsque vous utilisez une projection orthographique ( OrthographicCamera , qui est la valeur par défaut): si la taille de votre monde est de 12,8 x 7,8 mètres et que l'écran de votre appareil mesure 2560 x 1560 pixels, votre monde sera projeté de manière dynamique avec 200 pixels par mètre.

Lorsque la taille de la Viewport change (par exemple, si l'orientation de l'écran du smartphone est en train de changer), vous devez informer la Viewport de ce changement. Il mettra alors automatiquement à jour le viewportHeight et le viewportWidth Camera :

public void resize(int width, int height) {
    viewport.update(width, height);
}

Les Viewport visualisation gèrent également la fenêtre OpenGL Viewport et modifient la zone de dessin selon les besoins.

Les Viewport prennent également soin de convertir les coordonnées de l'écran en coordonnées de jeu, ce qui est nécessaire en particulier pour la cueillette:

private Vector2 worldPos = new Vector2();
public boolean touchDown (int x, int y, int pointer, int button) {
    worldPos.set(x, y);
    viewport.unproject(worldPos);
    processPicking(worldPos);
}

Fenêtres intégrées

Il y a quelques fenêtres intégrées qui font chacune des choses différentes. Voici une liste des noms et de leurs descriptions:

Nom de la fenêtre La description
StretchViewport Va étirer l'écran. Pas de barres noires, mais les proportions peuvent être désactivées.
FitViewport Maximisera sa taille en fonction du ratio d'aspect. Pourrait avoir des barres noires.
FillViewport Tout comme un FitVieport, mais remplit toujours tout l'écran.
ScreenViewport Remplit toujours tout l'écran, mais ne redimensionne aucun enfant.
ExtendedViewport Maintient le rapport hauteur / largeur sans barres noires en étendant le monde dans une direction
CustomViewport Une fenêtre personnalisée programmée. Pourrait avoir des barres noires, et pourrait garder les proportions.

Fenêtres personnalisées

Vous pouvez créer votre propre fenêtre personnalisée. Il peut avoir des barres noires et il peut ou non conserver son format, en fonction de la façon dont vous le programmez. Une fenêtre personnalisée ressemblerait à ceci:
public class Tutorial extends Viewport . Vous devez remplacer la update(width, height) à update(width, height) , mais c'est tout.

Une autre tentative consisterait à étendre le ScalingViewport générique et à fournir un autre Scaling qui n'est pas déjà fourni. Supposons que vous le définissiez sur Scaling.none . Cela ressemblerait à ceci: Exemple d'image Si vous voulez une référence, vous pouvez trouver les classes de fenêtre intégrées ici .

StretchViewport

Le StretchViewport est une Viewport d' Viewport de type, qui prend en charge une taille de l' écran virtuel.
Cela vous permet de définir une largeur et une hauteur fixes (résolution indépendante).
StretchViewport , comme son nom l'indique, étend l'écran virtuel si le format d'image virtuel ne correspond pas au rapport d'aspect réel. La fenêtre OpenGL ne sera pas modifiée et il n’y aura pas de barres noires.

Usage:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new StretchViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}

FitViewport

Les FitViewports sont des fenêtres qui conservent toujours les proportions. Cela se fait en créant des barres noires sur les bords où il reste de la place. C'est l'une des fenêtres les plus utilisées.

Usage:

private Viewport viewport;
private Camera camera;

public void create() {
    camera = new OrthographicCamera();
    viewport = new FitViewport(80, 48, camera);
}

public void resize(int width, int height) {
    viewport.update(width, height);
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow