openscreen 640x480 nicht möglich

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

openscreen 640x480 nicht möglich

Beitrag von northstarex »

Moin

laut Grafikkarten Mode Liste (win10, unterschiedliche Grafikkarten) ist eine Auflösung von 640x480px zugelassen. Wenn ich aber per OpenScreen(640,480,32,"screen") geht dieser kurz auf und gleich wieder zu. Wie bekomme ich das hin, dass dieser Mode angezeigt wird.

Ach ja.... es geht hier nur 32bit Tiefe, alle anderen Bit-Tiefen bringt das ganze hier zum Absturz, bzw. zu Fehlermeldung.

Gibt es da eine Lösung für Openscreen?
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: openscreen 640x480 nicht möglich

Beitrag von STARGÅTE »

Darf ich (dürfen wir) davon ausgehen, dass du nach OpenScreen eine valide Event- und Anzeige-Schleife hast?
Oder hast du eine RefreshRate angegeben die nicht unterstützt wird?

Wird der Modus denn bei ExamineScreenModes() aufgelistet?

Code: Alles auswählen

InitSprite()

  If ExamineScreenModes()
    While NextScreenMode()
      Debug Str(ScreenModeWidth())+"x"+Str(ScreenModeHeight())+"x"+Str(ScreenModeDepth())+"@"+Str(ScreenModeRefreshRate())+"Hz"
    Wend
  EndIf
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
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: openscreen 640x480 nicht möglich

Beitrag von northstarex »

mit deinen Codesnipsel zeigt die Liste sogar bis 320x200x32 60hz an:

320x200x32@60Hz
320x240x32@60Hz
400x300x32@60Hz
512x384x32@60Hz
640x400x32@60Hz
640x480x32@60Hz
800x600x32@60Hz
.
.
.
.
.
.
1920x1080x32@60Hz


Hier ein einfaches Script, da wo einfach ein Screen geöffnet wird. Hier funktioniert nur min. 800x600x32. Wenn man, oder ihr jetzt unter OpenScreen 640,480,32 eingibt und startet, dann geht der Screen kurz auf und gleich wieder zu.

Code: Alles auswählen

If InitSprite() And InitKeyboard() = 0
    MessageRequester("Error", "Can't open screen & sprite environment!", 0)
    End
  EndIf
  

  ; geht leider nur bis 800x600x32
  OpenScreen(800,600,32,"multi-screen")

  
  Repeat 
    
    
    ClearScreen($000000)  
    StartDrawing(ScreenOutput())
    DrawingMode(1)
    FrontColor(RGB(128, 255, 90))
    DrawText(0, 10, "da guck")
    DrawText(20, 80, "test")
    StopDrawing()
    FlipBuffers()  
    
; Ausgang -----------------------------------------------------------
    ExamineKeyboard()
    taste$ = KeyboardInkey()         
    If taste$="1" Or KeyboardPushed(#PB_Key_Escape)
      End
    EndIf
            
      ForEver
Zuletzt geändert von northstarex am 17.07.2021 13:02, insgesamt 1-mal geändert.
Bild
berie
Beiträge: 75
Registriert: 17.01.2018 08:52
Computerausstattung: Windows 11 64 bit, i7, 16GB RAM
Wohnort: Wesertal in Nordhessen

Re: openscreen 640x480 nicht möglich

Beitrag von berie »

Geht bei mir 640x480x32
Wieso hast du die Tastaturabfrage 2x in der Schleife ?
formerly known as bizzl
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: openscreen 640x480 nicht möglich

Beitrag von northstarex »

ja klar... manche System lassen auch 640x480x32 zu... keine frage. Ich habe gestern mal ein bissel herum gefragt und dabei ist herausgekommen, dass es unterschiedliche Screen-Abarbeitungsmöglichkeiten gibt. Es gibt eine Modi Liste (ich nenn es mal so!), die die Grafikkarte ausgibt, die geht von der höchsten bis zu der absolut kleinsten Auflösung. Bei mir also von 1920x1080 bis 320x200. Dann gibt es die Monitortreiber Modi-Liste, die geht bei mir von 1920x1080 bis 640x480 und dann gibt es noch die Betriebsystem Modi-Liste, die wohl PB abarbeitet oder die Grenze ausliest. Die geht bei mir von 1920x1080 bis 800x600. Das ist dann auch wohl die Lösung warum das ganzen bei mir mit 640x480px nicht funktioniert. Man könnte das jetzt noch mit einen Registry Hack ändern, ist aber nicht so die Lösung. Das Programm soll ja überall funktionieren.

Ich habe es mit einen kleinen Commandlinen Tool gelöst. Das Tool, arbeitet genau die Monitor Auflösungsgrenze ab, also 640x480x32. Dann klappt das auch mit dem Openscreen bei der geforderten Auflösung von 640x480x32. Es sieht so aus, als wenn die Openscreen Routine vorher die aktuelle Auflösung abfragt, bei identischer Auflösung wird wohl diese so übernommen - so funktioniert das mit dem oben genannten Tool.

So ist natürlich die Auslesung mit ExamineScreenModes() ungeeignet, wenn dieser Befehl Modis anzeigt, die der Monitor nicht kann und so nicht zur Verfügung steht.
Da müsste der Openscreen und ExamineScreenModes() Befehlt noch mal gefixt werden... meine Meinung :)
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: openscreen 640x480 nicht möglich

Beitrag von GPI »

Alterantive wäre: Ein rahmenloses Fenster zu maximieren und dort drin ein Screen zu erstellen.
So ein Fullscreen würd ich mittlerweile nicht mehr machen, haut nur die Icons auf den Desktop durcheinander und bringt weitere Nachteile mit sich.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
northstarex
Beiträge: 103
Registriert: 25.08.2013 18:04
Computerausstattung: alles mögliche^^
Wohnort: Schöppenstedt
Kontaktdaten:

Re: openscreen 640x480 nicht möglich

Beitrag von northstarex »

Ja... so habe ich auch zusammengeschraubt. Stellt alle möglich "Retro" Auflösungen da und gut ist. Ich dachte das openscreen könnte man auch ohne weiteres benutzen... egal, was solls :)

thx
Bild
Antworten