Zoeken…


viewports

Om meerdere resoluties en beeldverhoudingen te ondersteunen, gebruikt Libgdx de zogenaamde Viewports .
Er zijn een paar soorten Viewports die verschillende strategieën gebruiken om meerdere resoluties en beeldverhoudingen aan te kunnen.
Een Viewport maakt gebruik van een Camera onder de motorkap en beheert zijn viewportHeight en viewportWidth . U kunt de Viewport optioneel een Camera in de constructor geven, anders gebruikt hij standaard een OrthographicCamera :

private Viewport viewport;
private Camera camera;

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

Bovendien moet u de worldWidth en worldHeight opgeven voor de worldHeight van de viewport. Deze ruimte vertegenwoordigt het virtuele coördinatensysteem dat u zult gebruiken voor het opgeven van de te tekenen objecten en afmetingen. De viewport-transformatie, die bijvoorbeeld op een SpriteBatch kan worden toegepast, zorgt automatisch voor de transformatie van de logische coördinaten naar werkelijke schermcoördinaten, op een manier die overeenkomt met het daadwerkelijke type viewport dat u gebruikt. Als u bijvoorbeeld een orthografische projectie gebruikt (de standaard OrthographicCamera ): als uw wereldformaat 12,8 bij 7,8 meter is en uw apparaatscherm 2560x1560 pixels is, wordt uw wereld dynamisch geprojecteerd met 200 pixels per meter.

Wanneer de grootte van de Viewport verandert (bijvoorbeeld als de schermstand van de smartphone verandert), moet u de Viewport over die wijziging informeren. dan wordt de viewportHeight de Camera automatisch bijgewerkt viewportHeight en viewportWidth :

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

De Viewport s beheren ook de OpenGL Viewport en wijzigen het tekengebied naar behoefte.

De Viewport s zorgen ook voor het omzetten van schermcoördinaten naar spelcoördinaten, wat vooral nodig is voor het kiezen:

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);
}

Ingebouwde Viewports

Er zijn een paar ingebouwde viewports, die elk verschillende dingen doen. Hier is een lijst met de namen en hun beschrijvingen:

Viewport naam Beschrijving
StretchViewport Zal het scherm uitrekken. Geen zwarte balken, maar de beeldverhouding is mogelijk uitgeschakeld.
FitViewport Zal de grootte maximaliseren op basis van de beeldverhouding. Kan zwarte balken hebben.
FillViewport Helemaal hetzelfde als een FitVieport, maar vult altijd het hele scherm.
ScreenViewport Vult altijd het hele scherm, maar verkleint geen kinderen.
ExtendedViewport Houdt de beeldverhouding van de wereld zonder zwarte balken door de wereld in één richting uit te breiden
CustomViewport Een op maat geprogrammeerde Viewport. Heeft mogelijk zwarte balken en kan de beeldverhouding behouden.

Aangepaste Viewports

U kunt uw eigen aangepaste viewport maken. Het kan zwarte balken hebben en het kan de beeldverhouding al dan niet behouden, afhankelijk van hoe u het programmeert. Een aangepast kijkvenster ziet er ongeveer zo uit:
public class Tutorial extends Viewport . U zou de update(width, height) moeten overschrijven, maar dat is het dan.

Een andere poging zou zijn om de generieke ScalingViewport te breiden en een andere Scaling te leveren die nog niet is meegeleverd. Stel dat u het Scaling.none op Scaling.none . Dat zou er ongeveer zo uitzien: Afbeelding voorbeeld Als je wat referentie wilt, kun je de ingebouwde viewport-klassen hier vinden .

StretchViewport

De StretchViewport is een Viewport type dat een virtuele schermgrootte ondersteunt.
Hiermee kunt u een vaste (resolutie-onafhankelijke) breedte en hoogte definiëren.
De StretchViewport , zoals de naam al doet vermoeden, het virtuele scherm uit als de virtuele beeldverhouding niet overeenkomt met de werkelijke beeldverhouding. De OpenGL Viewport wordt niet gewijzigd en er verschijnen geen zwarte balken.

Gebruik:

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

FitViewports zijn viewports die altijd de beeldverhouding behouden. Dit gebeurt door zwarte balken aan de randen te maken waar ruimte over is. Dit is een van de meest gebruikte viewports.

Gebruik:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow