Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.07.2013, 19:19

[OpenGL] Bildschirminhalt linear skalieren

Hey Freunde,
ich hab eine Frage, deren Antwort ich noch nicht selbst durch Suchen gefunden habe. Und zwar: Mein aktuelles Projekt läuft in einer Auflösung von 640x480 und läuft derzeit im Fenstermodus. Da das aber bei den heutigen Auflösungen deutlich negativen Einfluss auf die Spielatmosphäre hat, würde ich es gerne im Vollbild laufen lassen.
Und jetzt meine Probleme:
1. Verwende ich den Vollbildmodus, wird die 640x480 Auflösung natürlich unscharf, was ich natürlich nicht möchte. Ich will knackige, scharfe Pixel, denn die niedrige Urauflösung ist ja gewollt. Gibt es eine Möglichkeit das Bild irgendwie linear zu strechten? Ich könnte natürlich das Spiel in einer höheren Auflösung laufen lassen und die Texturen einzeln linear dementsprechend skalieren, aber das hat sicher einen enormen Aufwand.
2. Wenn der einzige Weg eine höhere Auflösung ist, stellt sich mir noch eine andere Frage: Ich will, dass das Spiel auf jedem Bildschirm ungefähr einen gleichgroßen Bildausschnitt zeigt, aber heutzutage hat der eine noch 5:4, der andere 16:9 und soweiter...
Hat jemand einen guten, nicht zu aufwändigen Ansatz für mich?
Liebe Grüße

2

01.07.2013, 19:32

Du wirst 640x480 nicht hochskalieren können, ohne dass das Bild unscharf wird. Da fehlen natürlich wesentliche Bildinformationen.

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

3

01.07.2013, 19:40

Hab ich das richtig verstanden: Du möchtest 640x480 Pixel auch als Vollbild auf jedem beliebigen Monitor und die Pixel sind dann eben dementsprechend größer (also zum beispiel 16x16 Pixel große Flächen pro Ursprungspixel?)

Dann würde ich mein Bild in ein 640x480 Rendertarget rendern und in einem 2. Pass im Pixelshader einfach die Pixel in entsprechender Auflösung füllen. Ob das gut aussieht, kann ich dir nicht sagen. Ich vermute eher nein ;) Aber dann sollten es zumindest scharfe Pixelkanten geben, wenn du keine Interpolation in der Textur aktivierst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

01.07.2013, 19:40

Was für einem Grafikstil folgt das Projekt denn? Evtl. ist das was für dich: http://en.wikipedia.org/wiki/Hqx!? Ohne mehr Informationen ist jedenfalls es schwer, da viel zu sagen. Vielleicht könntest du uns ja mal ein paar Bilder posten, die zeigen, wie es im Moment aussieht und was in etwa du anstrebst...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

02.07.2013, 00:06

Ich will knackige, scharfe Pixel

Dann musst du bei OpenGL den GL_NEAREST-Filter benutzen.
Einige Emulatoren, z.B. DOSBox oder ZSNES benutzen auch noch gewisse Effekte, um alte CRT-Bildschirme zu simulieren, das finde ich auch ganz nett.
(Beispiel-Bild für den CRT-Effekt)

6

02.07.2013, 10:02

Den hier finde ich auch cool:

http://www.wiseandroid.com/image.axd?pic…%2F7%2Fhq4x.png

Wegen den unterschiedlichen Formaten: So richtig viele Möglichkeiten hat man nicht, und so richtig toll sind die alle nicht:
- Der Ausschnitt bleibt identisch, das Bild wir auf das neue Format skaliert und wird dementsprechend entlang einer Achse gestaucht oder gestreckt
- Der Ausschnitt bleibt gleich, aber du hast links/rechts oder oben/unten schwarze Balken. Alternativ kannst du vielleicht ein nettes Muster oder nützliche Zusatzinfos dort anzeigen
- Der Bildausschnitt ändert sich je nach Seitenverhältnis. Entweder sieht man bei unterschiedlichen Auflösungen mal mehr, mal weniger, oder du machst so etwas, so dass man je nach Auflösung andere Dinge sieht.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige