Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Vollbildauflösungs-Fragen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 101

BeitragVerfasst am: 15.05.2024, 19:17    Titel: Vollbildauflösungs-Fragen Antworten mit Zitat

Bastle gerade an ner Lib, die einen zuverlässigen 640x480 8bpp Canvas erzeugt. Diese sollte normal in den Vollbildmodus wechseln, optional auch Fenster, skaliert die 640x480 sogar automatisch hoch, sodass man sie auch gut sehen kann.

Problem: Windows mag VGA nicht. Direkt 640x480 Fullscreen geht auf nen FullHD-Bildschirm schon mal nicht. Teilweise gehen auch nur 32 bpp Auflösungen - ab 800x600 - 8 bpp aber nicht.

Ich hab' zwar jetzt einfach 1920x1080 mit 8 bpp, und skalier' mir mein Bild für die Ausgabe hoch, aber es ist ja nicht gesagt, dass das auf JEDEM PC "Goldstandard" wäre.

Deshalb bräuchte ich eine Methode um "gültige" Vollbild-Grafikmodi zu erkennen, idealerweise ohne alle durch zu probieren. Gibt es auch ne Möglichkeit zu ermitteln, ob der Canvas im Vollbildmodus läuft ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4710
Wohnort: ~/

BeitragVerfasst am: 15.05.2024, 22:12    Titel: Antworten mit Zitat

Die Vollbild-Modi zu ermitteln, sollte mit SCREENLIST gehen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 101

BeitragVerfasst am: 16.05.2024, 16:46    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Die Vollbild-Modi zu ermitteln, sollte mit SCREENLIST gehen.

Stimmt. Laut Beschreibung... Funzt allerdings bei mir falsch. Spuckt trotz "SCREENLIST(8)" Auflösungen aus, die nur mit 32 bpp (oder auch 16 bpp) im Vollbildmodus gehen. Immerhin korrekt: 640x480 geht gar nicht, 800x600 mit 32 bpp schon. Und eben die Monitorauflösung geht mit 8 bpp in Fullscreen. PC-Technik halt. Kann ja nicht so ausgereift sein wie der Kathedralenbau im Mittelalter... :-/

Untoll, wenn eine EXE-Datei schon wegen solcher Kleinigkeiten nicht auf anderen Systemen funktioniert...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4710
Wohnort: ~/

BeitragVerfasst am: 16.05.2024, 17:32    Titel: Antworten mit Zitat

Immerhin war der Köllner Dom nach 630 Jahren Bau schon fast fertig. lachen
Was passiert, wenn ein nicht möglicher Vollbildmodus aufgerufen wird? Idealerweise sollte dann gar kein Grafikmodus initialisiert werden, was sich dann über SCREENPTR oder so prüfen lässt, und du könntest den nächsten Eintrag ausprobieren. Wenn allerdings ein Modus initialisiert wird, mit dem du nichts anfangen kannst, ist das nicht so toll. Das müsste sich dann über SCREENINFO prüfen lassen. Optimal ist das natürlich nicht.
Die englische Referenz zu SCREENLIST gibt da leider auch nichts anderes her als die deutsche.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 101

BeitragVerfasst am: 16.05.2024, 18:18    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Immerhin war der Köllner Dom nach 630 Jahren Bau schon fast fertig. :lol:
Was passiert, wenn ein nicht möglicher Vollbildmodus aufgerufen wird? Idealerweise sollte dann gar kein Grafikmodus initialisiert werden, was sich dann über SCREENPTR oder so prüfen lässt, und du könntest den nächsten Eintrag ausprobieren. Wenn allerdings ein Modus initialisiert wird, mit dem du nichts anfangen kannst, ist das nicht so toll. Das müsste sich dann über SCREENINFO prüfen lassen. Optimal ist das natürlich nicht.
Die englische Referenz zu SCREENLIST gibt da leider auch nichts anderes her als die deutsche.

Danke, hab' schon recherchiert; wie du schon vermutest, wird einfach ungefragt ein Fenster aufgemacht.

SCREENCONTROL könnte noch was Hilfreiches liefern - Desktop und Canvasauflösung vergleichen; mein Workaround wär' erst mal, dass man notfalls per Programmparameter erzwingen kann, dass Vollbildmodus in Desktopgröße startet. Meine Skalierroutine funktioniert schon perfekt. - Ohne Verzerrung, Unschärfe, und mit breiten schwarzen Rändern, ist halt großes Kino ;-)

Ich fürchte, dass man in Zukunft wohl eine komplette 8-bpp-Emulation aufbauen muss, und dann muss man sich die GFX-Funktionen neu schreiben...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Matthias
Gast





BeitragVerfasst am: 18.07.2025, 08:25    Titel: Antworten mit Zitat

Hallo! Windows unterstützt in modernen Grafikkarten meist keine klassischen 8bpp Vollbildmodi mehr, besonders bei niedrigen Auflösungen wie 640x480. Deine Lösung mit 1920x1080 und Skalierung ist daher oft die praktikabelste. Um gültige Vollbildmodi zu ermitteln, kannst du die DirectX-API (IDXGIOutput::GetDisplayModeList) nutzen – damit bekommst du eine Liste unterstützter Modi ohne Raten. Ob der Canvas im Vollbildmodus läuft, kannst du z.B. über das Fensterstil-Flag und den Monitor überprüfen.
Nach oben
Monika



Anmeldungsdatum: 03.07.2025
Beiträge: 9

BeitragVerfasst am: 12.10.2025, 17:38    Titel: Antworten mit Zitat

Hi, du kannst unter Windows mit EnumDisplaySettings alle verfügbaren Display-Modi abfragen, ohne sie durchzuprobieren. Für Gültigkeit am besten auf die von EnumDisplaySettings gelieferten Modi beschränken. Ob dein Canvas im Vollbild läuft, könntest du z.B. am Fenstertyp oder durch Vergleichen von Fenster- und Bildschirmauflösung erkennen. Viele moderne Grafikkarten und Treiber unterstützen 8bpp aber nicht mehr nativ im Vollbild, daher ist Hochskalieren meist der bessere Weg.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 116

BeitragVerfasst am: 12.10.2025, 20:18    Titel: Antworten mit Zitat

Bei mir wird vieles doppelt angezeigt. Was bedeutet das?
Code:
#include "windows.bi"
Dim As DEVMODE dm
Dim As Long mode
dm.dmSize = Sizeof(DEVMODE)
Do
    If EnumDisplaySettings(NULL, mode, @dm) = 0 Then Exit Do
    Print dm.dmBitsPerPel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmDisplayFlags, dm.dmDisplayFrequency
    mode += 1
Loop
Sleep

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1283
Wohnort: Ruhrpott

BeitragVerfasst am: 13.10.2025, 12:14    Titel: Antworten mit Zitat

Kann ich nicht bestätigen. Bei mir wird jeder Modus nur einmal aufgelistet.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4710
Wohnort: ~/

BeitragVerfasst am: 13.10.2025, 13:59    Titel: Antworten mit Zitat

Bei mir sind ebenfalls Mehrfachnennungen dabei:

Code:
32            1024          768           0             75
32            1152          870           0             75
32            1152          870           0             60
32            1152          870           0             60
32            1152          870           0             60
32            1280          720           0             59
32            1280          720           0             60
32            1280          1024          0             60
32            1280          1024          0             75
32            1440          480           0             59
32            1440          480           0             59
32            1440          480           0             59
32            1440          480           0             60
32            1440          480           0             60
32            1440          480           0             60
32            1440          576           0             59
32            1440          576           0             59
32            1440          576           0             59
32            1440          576           0             60
32            1440          576           0             60
32            1440          576           0             60
32            1680          1050          0             59
32            1680          1050          0             59
32            1680          1050          0             59
32            1680          1050          0             60
32            1680          1050          0             60
32            1680          1050          0             60
32            1920          1080          0             59
32            1920          1080          0             60

Kann sein, dass die Liste unvollständig ist, denn meine Konsolenausgabe schneidet weggescrollte Zeilen ganz gern ab.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berkeley



Anmeldungsdatum: 13.05.2024
Beiträge: 101

BeitragVerfasst am: 13.10.2025, 22:53    Titel: Antworten mit Zitat

Eigentlich sollte FreeBASIC völlig plattformunabhängig sein und funktionieren. Man also auf sämtliche Windows-Funktionen verzichten können und entsprechend auch einheitliche Ergebnisse erzielen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 958
Wohnort: Austria

BeitragVerfasst am: 14.10.2025, 02:43    Titel: Antworten mit Zitat

Falls jemand genauer reinschauen mag, kann man sich hier die Implementierungen in FBs gfxlib2 ansehen:



Die letzeren beiden verwenden auch EnumDisplaySettings, der D2D driver IDXGIOutput::GetDisplayModeList, der DX driver verwendet legacy IDirectDraw2_EnumDisplayModes.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1283
Wohnort: Ruhrpott

BeitragVerfasst am: 14.10.2025, 12:18    Titel: Antworten mit Zitat

Berkeley hat Folgendes geschrieben:
Eigentlich sollte FreeBASIC völlig plattformunabhängig sein und funktionieren. Man also auf sämtliche Windows-Funktionen verzichten können und entsprechend auch einheitliche Ergebnisse erzielen.


Na ja, ich denke mal, dass die Grafikmodi vom Grafikkartentreiber kommen. Und der ist nun mal nicht plattformunabhängig.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz