Hallo,
mein Spiel soll mit den verschiedensten Auflösungen klar kommen. Dank ZoomSprite() und relativ hochauflösenden Sprites klappt das auch ganz gut, egal ob mit 2880 × 1800 oder 1280 x 800 Pixel Bildschirmgröße.
Einziges Problem ist das Seitenverhältnis. Es soll unabhängig von der Auflösung stets 16:10 sein, schließlich sollen alle Spieler immer den selben Ausschnitt der Spielwelt sehen. Bei Auflösungen von 4:3 sollen demzufolge oben und unten und bei Auflösungen größer 16:9 links und rechts schwarze Balken zu sehen sein.
Wie könnte man das am besten anstellen? Tatsächlich mit einem schwarzen Sprite als Balken links und rechts bzw. oben und unten den Bildschirm abdecken und ein entsprechendes Offset bei DisplaySprite() angeben?
Cool wäre natürlich, wenn man bei OpenScreen noch so eine Art Viewport angeben könnte, der nur einen Ausschnitt des Bildschirmes sichtbar macht.
native Auflösung + festes Seitenverhältnis
native Auflösung + festes Seitenverhältnis
Zuletzt geändert von Lebostein am 26.08.2013 07:22, insgesamt 2-mal geändert.
Re: native Auflösung + festes Seitenverhältnis
Jo, erscheint mir als einfachste Möglichkeit.Lebostein hat geschrieben:Tatsächlich mit einem schwarzen Sprite als Balken links und rechts bzw. oben und unten den Bildschirm abdecken und ein entsprechendes Offset bei DisplaySprite() angeben?
Eine andere wäre ein WindowedScreen zu nehmen (welcher immer 16:10 hat) und ihn in eine maximiertes schwarzes Trägerfenster einzubetten. Die Position kannst du ja dann angeben.
Ein zusätzlichen Offset bei DisplaySprite() brauchst du aber meiner Meinung nach nicht, da die CameraPosition ja schon der Offset ist, und den kannst du ja zB direkt auf die Mitte legen, statt oben links.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 103
- Registriert: 25.08.2013 18:04
- Computerausstattung: alles mögliche^^
- Wohnort: Schöppenstedt
- Kontaktdaten:
Re: native Auflösung + festes Seitenverhältnis
bin auch grad an dem Problem hängen geblieben... Gibt es den keinen Befehl für "Aspect Ratio/Seitenverhältnis einhalten" oder so?
Ich schraube hier an ein Eingabemenü für einen Spielautomaten, da ist zwar eine 4:3 Röhre drin, aber wenn da ein 16:9 Screen(oder schlimmeres) drin wäre, würde die 800x600 Auflösung doch sehr "breit" aussehen.
Bissel unschön, oder?
Ich schraube hier an ein Eingabemenü für einen Spielautomaten, da ist zwar eine 4:3 Röhre drin, aber wenn da ein 16:9 Screen(oder schlimmeres) drin wäre, würde die 800x600 Auflösung doch sehr "breit" aussehen.
Bissel unschön, oder?
Re: native Auflösung + festes Seitenverhältnis
Da gibt es kein "Befehl", dass ist n Knopf auf deinem Bildschirm, wie er Auflösungen behandeln soll:
Voll, Seitenverhältnis beibehalten, Zentrieren
ggf. auch in den Grafikkartentreibern einstellbar: GPU-Skalierung
Denn wenn du einen 800x600 FullScreen auf einem nativem 1920x1080 Bildschirm öffnest, dann hängt es von deinem Bildschirm ab, wie es am ende aussieht.
Ansonsten gibt immer noch den WindowedScreen.
Voll, Seitenverhältnis beibehalten, Zentrieren
ggf. auch in den Grafikkartentreibern einstellbar: GPU-Skalierung
Denn wenn du einen 800x600 FullScreen auf einem nativem 1920x1080 Bildschirm öffnest, dann hängt es von deinem Bildschirm ab, wie es am ende aussieht.
Ansonsten gibt immer noch den WindowedScreen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: native Auflösung + festes Seitenverhältnis
Der einzige Grund für ein "echtes" Fullscreen (OpenScreen()) anstelle
vom Fenster ist der "exclusiv" Modus. Das heißt die tastache, das
die Grafikkarte tatsächlich nur das Spiel rendern muss und nicht das
ganze sich mit anderen Fenstern teilt (Multimonitor natürlich abgesehen).
Bei den meisten 2D-Spielen ist das aber eh irrelevant, weshalb ich
persönlich mir dann den WindowedScreen in jedem Fall bevorzugen
würde. PB hat probleme mit dem Fullscreen, weshalb Fred nun AreoGlass
bzw DWM abschaltet, wenn Fullscreen aktiviert ist. Was ziemlich
unschön wirkt, zumindest ich hab schon seit Jahren kein Spiel mehr
gehabt, dass das machen musste. Fällt aber auch nur bei Usern auf,
die mehrere Monitore haben. Beim WindowedScreen nicht notwendig.
Außerdem gibt es nach wie vor das Problem beim minimieren des
Fullscreens. Wobei letzteres wohl inzwischen nur noch beim aktivieren
von Multi-Threading der Fall ist.
Da ich allerdings die 3D-Eninge verwende und nur dort FSAA vorhanden ist,
hab ich bisher abgesehen, mir eine kleine Include zu schreiben. Der exklusiv
Modus ist denke ich schon vorteilhaft bei 3D ... Aber der simulierte
Vollbildmodus wäre gar nicht so viel Aufwand, zumindest für Windows
kann man per WinAPI die Auflösung des Desktopmonitors beliebig einstellen.
Darauf dann ein Rahmenloses Fenster + WindowedScreen und der Benutzer
merkt garnicht, das es nur ein Fenster ist. Mit IsScreenActive() kann man
leicht raus finden, ob das Fenster noch den Focus hat und entsprechend
agieren. Es müssen auch keine Grafiken neu geladen werden, nachdem der
Screen mal nicht den Fokus hatte.
MFG PMV
vom Fenster ist der "exclusiv" Modus. Das heißt die tastache, das
die Grafikkarte tatsächlich nur das Spiel rendern muss und nicht das
ganze sich mit anderen Fenstern teilt (Multimonitor natürlich abgesehen).
Bei den meisten 2D-Spielen ist das aber eh irrelevant, weshalb ich
persönlich mir dann den WindowedScreen in jedem Fall bevorzugen
würde. PB hat probleme mit dem Fullscreen, weshalb Fred nun AreoGlass
bzw DWM abschaltet, wenn Fullscreen aktiviert ist. Was ziemlich
unschön wirkt, zumindest ich hab schon seit Jahren kein Spiel mehr
gehabt, dass das machen musste. Fällt aber auch nur bei Usern auf,
die mehrere Monitore haben. Beim WindowedScreen nicht notwendig.
Außerdem gibt es nach wie vor das Problem beim minimieren des
Fullscreens. Wobei letzteres wohl inzwischen nur noch beim aktivieren
von Multi-Threading der Fall ist.

Da ich allerdings die 3D-Eninge verwende und nur dort FSAA vorhanden ist,
hab ich bisher abgesehen, mir eine kleine Include zu schreiben. Der exklusiv
Modus ist denke ich schon vorteilhaft bei 3D ... Aber der simulierte
Vollbildmodus wäre gar nicht so viel Aufwand, zumindest für Windows
kann man per WinAPI die Auflösung des Desktopmonitors beliebig einstellen.
Darauf dann ein Rahmenloses Fenster + WindowedScreen und der Benutzer
merkt garnicht, das es nur ein Fenster ist. Mit IsScreenActive() kann man
leicht raus finden, ob das Fenster noch den Focus hat und entsprechend
agieren. Es müssen auch keine Grafiken neu geladen werden, nachdem der
Screen mal nicht den Fokus hatte.

MFG PMV
-
- Beiträge: 103
- Registriert: 25.08.2013 18:04
- Computerausstattung: alles mögliche^^
- Wohnort: Schöppenstedt
- Kontaktdaten:
Re: native Auflösung + festes Seitenverhältnis
ja... so ist das mit den fullscreen. Egal, ist mir eben nur so aufgefallen, weil ich eben mein Programm aufn 16:9 schlepptop bearbeitet hatte^^
bis denne...
north
bis denne...
north