bobobo hat geschrieben:Und sag mir nun nicht, dass das nur ein Treiberproblem ist.
Nein.
Kaeru Gaman hat geschrieben:@Danilo
durchaus vernünftiger Einwand, aber ich hatte in der Laberecke vor einigen
Wochen gefragt, und ettliche Kollegen haben berichtet, dass ein einfach ohne
Zusatzabfrage auf 4:3 geöffneter Fullscreen verzerrt dargestellt wird.
Ja, da ist bei vielen Endanwendern so. Ich denke es kommt auf beides
an, die Displays und die Grafikkarte. Im günstigen Fall hat man alle
Optionen zur Verfügung, im anderen Falle keine.
Ich kann zum Beispiel beim Monitor zwischen Breit und 4:3 wählen,
so daß bei 4:3 Modes das Bild in der Mitte dargestellt wird, mit schwarzen
Rändern.
Unter Windows konnte ich dann beim Grafikkartentreiber noch einstellen
was die Grafikkarte macht mit 4:3 Modes (Zoom, Minimiert in der Mitte, Stretched auf Wide)
Aber OK, mir ist klar das nicht jeder alle Optionen hat, manche User
haben eben keine Option. Da hilft es wenn der Programmierer
den Kunden entscheiden lässt welche Auflösung, Farbtiefe und
Frequenz er für den Screen haben möchte.
Nachdem der Kunde das ausgewählt hat, bekommst Du die Werte und
öffnest den gewünschten Screen mit Width, Height, Bpp, Hz.
Die Hz interessieren uns dann garnicht weiter. Wir brauchen nur Width und Height:
- Bei einem 3D-Spiel machst Du dann einfach eine Kamera mit entsprechendem Aspect Ratio
- Bei einem quadratischen Spielfeld (Bomberman) nimmst Du den kleineren Wert (min(Width,Height)) als Spielfeldgröße und setzt das Spielfeld in die Mitte des Screens
- Bei einem festen 4:3/16:9/xxx Spielfeld kannst mit Width+Height auch checken was die maximale Größe sein kann und es mittig setzen.
- Bei einem virtuellen Spielfeld, was größer als der Screen ist (Boulderdash), zeigst Du den Ausschnitt Width, Height.
Das sollte dann immer und überall funktionieren. Auf 4:3, auf 1:1, auf
verschiedenen Widescreens, auf gedrehten TFTs usw.
Wenn der User 1920x1200 oder 1200x1920 oder 600x800 möchte,
dann soll er das auch bekommen. Er wird schon wissen warum er das
auswählt. Vielleicht hat er Widescreen, vielleicht auch noch hochkant
gedreht oder sonstwas. Wenn sich der User zwei 24er Widescreens
gedreht nebeneinander stellt, um einen Desktop von 2400x1920 zu haben,
dann soll er das ruhig machen können. Geht uns doch nichts an.
Was wir erbringen ist eine Serviceleistung an den Kunden, egal ob nun
kommerziell oder free. Der Kunde ist König und hat immer Recht, da
wiederspricht man nicht. Also versuchen wir einfach dem Kunden durch
unser Programm den besten Service zu bieten, den wir geben können.
Ich kann dem Kunden nicht sagen "kauf Dir halt einen 4:3, Widescreen
ist eh Shit", oder "dann stell Deine Monitore halt richtig rum auf".
Und auch nicht "Du mußt Deinen Monitor mit 60Hz laufen lassen!".
Das alles ist die Sache des Kunden, und da sollten wir uns nicht einmischen.
Also fragen wir ihn mit einem Requester welchen Screenmodus er gerne
hätte und mit welcher Frequenz (der Eine will immer 85 oder 100Hz;
der Andere kann nur immer mit 50 oder 60Hz, was beim nächsten
aber flackern würde), und dann erfüllen wir ihm diesen Wunsch und
stellen auf diesem gewünschten Screen das dar, was wir zeigen möchten.
Die oberen 3 Punkte sollten dabei helfen, aber ich weiß natürlich nicht
genau was Du für eine Spielart machen möchtest. Ich denke aber damit
kannst Du selbst entscheiden was Du machst.
Wem der Kunde/Endnutzer egal ist, der kann ja einfach 320x200@50Hz
fest programmieren. Werden dann halt entsprechend Viele nicht nutzen (können).
Möchte man viele Nutzer, muß man es halt flexibler gestalten, worum es
Kaeru hierbei ja geht.
Oder?
Wie bei NicTheQuick geht bei mir auch nix mit 60Hz unter Linux, mußte
von daher das If/EndIf auskommentieren:
Code: Alles auswählen
001: 3840x1200-32bit @0Hz
002: 1920x1200-32bit @0Hz
003: 1600x1200-32bit @0Hz
004: 1280x1024-32bit @0Hz
005: 1024x768-32bit @0Hz
006: 800x600-32bit @0Hz
007: 640x480-32bit @0Hz
Allover Number of Modes: 7
Das sind genau die Modes, die ich in xorg.conf freigegeben habe.
Meine Displays zeigen mir dabei mit Desktop 3840x1200 73Hz an.