Screenmodes

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Kaeru Gaman hat geschrieben:das Kernproblem ist, dass man auf einem Widescreen zwar ein 4:3 Screen öffnen kann,
dass der bei den möglichen Einstellungen aufgelistet wird, der dann aber verzerrt dargestellt wird.
Der Nutzer kann es aber doch einstellen, wie er 4:3 auf einem
Widescreen angezeigt bekommen möchte.
Entweder skaliert und verzerrt, oder mit Rändern außen, oder gar in der
Mitte ohne Skalierung (z.B. 800x600 auf einem 1920x1200 TFT).

Noch besser ist es aber, wenn Du Dein Spiel/Anwendung so flexibel schreibst,
das es auf Widescreen auch Widescreen sein kann.
Wie bei FarCry zum Beispiel. Das wird normal angezeigt auf 4:3, und
auf einem Widescreen ist es eben Widescreen - ohne Verzerrung.
Bei einem Boulderdash kannst Du das auch so machen, daß das Spielfeld
dann auf Widescreen eben größer ist. Oder aber, Du öffnest den gewünschten
Screen (z.B. 1920x1200), stellst das Spielfeld aber mit schwarzen Rändern
an der Seite dar (1600x1200).

Oder?
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Danilo hat geschrieben: Der Nutzer kann es aber doch einstellen, wie er 4:3 auf einem
Widescreen angezeigt bekommen möchte.
Entweder skaliert und verzerrt, oder mit Rändern außen, oder gar in der
Mitte ohne Skalierung (z.B. 800x600 auf einem 1920x1200 TFT).
stimmt so nicht .. ich hab n Monitor/Graka der bei nicht nativer Ansteuerung immer auf Fullscreen (damit meist verzerrt) aufzieht.
Und sag mir nun nicht, dass das nur ein Treiberproblem ist.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@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.

Daher treibe ich ja diesen Aufwand, um zu ermitteln, wie ich am effektivsten vorgehen kann. ;)
Danilo hat geschrieben:Noch besser ist es aber, wenn Du Dein Spiel/Anwendung so flexibel schreibst,
das es auf Widescreen auch Widescreen sein kann.
das ist das Ziel von Verfahren 1.)

Verfahren 2.) soll eine Alternative eröffnen.
gerade auch im Hinblick auf non-standard-formatierte Screens, wie z.B. quadratisch.
Zuletzt geändert von Kaeru Gaman am 29.07.2008 21:08, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Schön wäre es, wenn man auch den Bildschirm auswählen könnte (nicht
extra über dem Grafikkarten Treiber), scheint aber in PB nicht vorgesehen
zu sein.

Auch sollte die Maus im Fullscreen-Modus freigegeben werden, zumindest im
Pause-Modus, damit man den sekundären Bildschirm bedienen kann.
(manche Video-Player können das aber auch nicht, aber zumindest meist
geht es)

Nur um mal drauf hinzuweisen, das es ausser Seitenverhältnis noch weitere
Dinge gibt, die nicht oder nur selten beachtet werden.

gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ts-soft hat geschrieben:Auch sollte die Maus im Fullscreen-Modus freigegeben werden, zumindest im
Pause-Modus, damit man den sekundären Bildschirm bedienen kann.
danke für den Hinweis, ich werde dran denken.
(mein Pause-Mode im Windowed ist "spektakulär", hab ich aber noch kein snippet veröffentlicht.)

...insgesamt schwebt mir eine alternativ Full/Windowed Version vor, wo man umschalten kann,
aber gleichzeitig vernünftig auf das native Monitor-Seitenverhältnis eingegangen wird.

PS:
ich weiß nicht, ob ich es schade finden soll, dass ich mich mit solcher
Grundlagenprogrammierung beschäftige, anstatt meine Game-Konzepte
auszuarbeiten, oder ob ich mich drüber freuen soll...
... aber manchmal hab ich auch das Gefühl, ich bin bei den
Grundlagen besser, als beim Umsetzen schicker Konzepte....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Hey, ihr dürft ruhig auf mein PS antworten.... Bild

... zerreißt mich ruhig....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Nah, alles dufte Kaeru. Deine Gedanken und Ansätze sind schon lobenswert.

Aaaaaber, das wir hatten Thema schon mal falls du dich noch erinnerst. Im Endeffekt solltest nicht zu viel Zeit mit der, wie du selber sagst Grundlagen-Programmierung vergeuden sonder Konzepte umsetzen. Sprich Anwendugen und Spiele du schon länger planst endlich umzusetzen. Es ist endloser Kreislauf den du endlich durchbrechen solltest weil es sonst nie Ergebnisse geben wird.

Man wird nicht jünger nicht wahr?

PS: Sorry diese Plattitüde musste sein ... Bild
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

aye, passt scho Alter, musste ich auch ma wieder hören... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
C4rizz
Beiträge: 223
Registriert: 01.05.2006 12:43
Computerausstattung: Desktop : Amd Athlon X2 3,2 ghz Black Edition. 4GB Corsair XMS DDR2, nVidia 460 gtx Sonic Extreme

Notebook : [Asus] i5 @ 2,9 ghz, 8GB Corsair DDR3, nVidia gt 540m

Internet : DSL - 16 Mbit | HSDPA - 7,2 Mbit
Wohnort: Celle

Beitrag von C4rizz »

Asus VW22" Widescreen

001: 640x480-32bit @60Hz
006: 720x480-32bit @60Hz
008: 720x576-32bit @60Hz
009: 800x600-32bit @60Hz
014: 848x480-32bit @60Hz
019: 960x600-32bit @60Hz
024: 1024x768-32bit @60Hz
029: 1152x864-32bit @60Hz
035: 1280x720-32bit @60Hz
040: 1280x768-32bit @60Hz
045: 1280x800-32bit @60Hz
050: 1280x960-32bit @60Hz
055: 1280x1024-32bit @60Hz
060: 1360x768-32bit @60Hz
065: 1400x900-32bit @60Hz
070: 1440x900-32bit @60Hz
075: 1600x900-32bit @60Hz
080: 1600x1024-32bit @60Hz
085: 1600x1200-32bit @60Hz
090: 640x480-16bit @60Hz
095: 720x480-16bit @60Hz
097: 720x576-16bit @60Hz
098: 800x600-16bit @60Hz
103: 848x480-16bit @60Hz
108: 960x600-16bit @60Hz
113: 1024x768-16bit @60Hz
118: 1152x864-16bit @60Hz
124: 1280x720-16bit @60Hz
129: 1280x768-16bit @60Hz
134: 1280x800-16bit @60Hz
139: 1280x960-16bit @60Hz
144: 1280x1024-16bit @60Hz
149: 1360x768-16bit @60Hz
154: 1440x900-16bit @60Hz
159: 1600x900-16bit @60Hz
164: 1600x1024-16bit @60Hz
169: 1600x1200-16bit @60Hz
174: 640x480-8bit @60Hz
179: 720x480-8bit @60Hz
181: 720x576-8bit @60Hz
182: 800x600-8bit @60Hz
187: 848x480-8bit @60Hz
192: 960x600-8bit @60Hz
197: 1024x768-8bit @60Hz
202: 1152x864-8bit @60Hz
208: 1280x720-8bit @60Hz
213: 1280x768-8bit @60Hz
218: 1280x800-8bit @60Hz
223: 1280x960-8bit @60Hz
228: 1280x1024-8bit @60Hz
233: 1360x768-8bit @60Hz
238: 1440x900-8bit @60Hz
243: 1600x900-8bit @60Hz
248: 1600x1024-8bit @60Hz
253: 1600x1200-8bit @60Hz
Allover Number of Modes: 257
PB 3.94/4.10
Meine Hompage
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten