ScreenOutput() - Die angegebene Ausgabe ist NULL

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von RSBasic »

Hallo,


ich wollte ein paar Screen-Codes testen und mir ist aufgefallen, dass jedesmal die folgende Fehlermeldung erscheint:
Fehlerbericht hat geschrieben:[16:14:10] [ERROR] Die angegebene Ausgabe ist NULL (0 Wert).
Und zwar meckert er in der folgenden Zeile:

Code: Alles auswählen

If StartDrawing(ScreenOutput())
ich verwende die Version 4.60 (x86) und hier ein Beispiel-Code:

Code: Alles auswählen

EnableExplicit

InitSprite()
InitKeyboard()

If OpenScreen(1024,768,32,"Screen")
  
  Repeat
    FlipBuffers()
    ClearScreen(RGB(0,0,0))
    
    If StartDrawing(ScreenOutput())
      DrawText(100,100,"Hallo",RGB(255,255,255),RGB(0,0,0))
      
      StopDrawing()
    EndIf
    
    ExamineKeyboard()
    
    If KeyboardReleased(#PB_Key_Escape)
      End
    EndIf
    
  ForEver
EndIf
Dieser Code hat bei mir immer funktioniert und auch alle anderen Codes, die ich besitze, haben funktioniert, aber warum mit dieser PB-Version nicht mehr? Hat sich da was geändert oder was mache ich grundsätzlich falsch? Oder ist das ein Bug?

PS: Library Subsystem ist bei mir leer.

Ich hoffe, ihr könnt mir helfen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von ts-soft »

Ich würde sagen, das ist ein Bug in Deinem Windows-System, Code läuft hier einwandfrei!
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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von RSBasic »

Wenn ich bei Library Subsystem "DirectX7" eingebe, dann funktioniert es. :roll:
Wenn nichts eingegeben wurde, was nimmt er denn standardmäßig?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von ts-soft »

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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von RSBasic »

@ts-soft
Teste ich nachher, aber wenn man DX11 hat, dann hat man doch auch die Dateien aus DX9 oder nicht?

So nun konnte ich das Problem endlich mal eingrenzen. Es liegt am Multi-Monitor. Ich habe testweise (Win + P) nur auf meinen primären Monitor geschaltet und der Code funktioniert! Warum klappt es nicht, wenn mehrere Monitore aktiv sind? Mein Beispiel-Screen wird doch eh nur auf dem 1. Monitor angezeigt.
:?

@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von ts-soft »

RSBasic hat geschrieben:@ts-soft
Teste ich nachher, aber wenn man DX11 hat, dann hat man doch auch die Dateien aus DX9 oder nicht?
Nein, dann hat man eben nicht alle erforderlichen Dateien für DX9. DX9 sollte man zusätzlich Installieren, ansonsten
laufen viele Spiele nicht.
RSBasic hat geschrieben: So nun konnte ich das Problem endlich mal eingrenzen. Es liegt am Multi-Monitor. Ich habe testweise (Win + P) nur auf meinen primären Monitor geschaltet und der Code funktioniert! Warum klappt es nicht, wenn mehrere Monitore aktiv sind? Mein Beispiel-Screen wird doch eh nur auf dem 1. Monitor angezeigt.
:?

@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Habs gerade getestet, bei MultiMonitor-Betrieb geht das Beispiel nur, wenn die native Auflösung beibehalten wird.
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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von STARGÅTE »

habe zwei TFTs mit 1280x1024 und wenn ich den Beispielcode ausführe "verschiebt" sich der zweite Bildschirm nach rechts und der Screen (mit nur 1024x768) wird ordnungsgemäß geöffnet und es kommt kein Fehler.

WIN XP dx9
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
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von Danilo »

RSBasic hat geschrieben:@All
Kann jemand bitte, der zwei Monitore besitzt, den Code testen?
Läuft hier ohne Deinen NULL-Fehler, aber ich habe nur schwarzen Bildschirm.
Ist ein bekanntes Problem: Fullscreen problem with dualscreen monitor

Wenn ich die folgenden Zeilen vor Deinen Code einfüge, funktioniert alles korrekt
und ich sehe auch den Text:

Code: Alles auswählen

;
; fix for fullscreen multi monitor bug in PB DirectX9
;
; Fullscreen problem with dualscreen monitor:
; http://www.purebasic.fr/english/viewtopic.php?f=4&t=41281
;
CallFunction(OpenLibrary(#PB_Any,"dwmapi.dll"),"DwmEnableComposition",0)
Diese Zeile sollte man immer als erstes in allen Fullscreen-Anwendungen aufrufen
um Probleme zu vermeiden. Dadurch wird die Aero-Desktop-Oberfläche ausgeschalten.

Vielleicht liegt es bei Dir auch daran.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
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

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von ts-soft »

Mit dem Code von Danilo gehts auch mit 1024 x 768, lediglich die Anzeige auf dem zweiten Monitor ist ziemlich durcheinander
gewürfelt, aber nach beenden des Beispiels, ist alles wieder Okay.
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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ScreenOutput() - Die angegebene Ausgabe ist NULL

Beitrag von RSBasic »

@ts-soft
Ich hatte zwar noch nie Probleme damit, dass irgendwelche Spiele nicht liefen, aber ich habe es mal rasch nachinstalliert.
Nach der Instalation habe ich den Code erneut getestet, aber leider besteht das Problem immernoch.
Aber selbst wenn irgendwelche Dateien fehlen würden, dann sollte PureBasic aber auch die korrekte Fehlermeldung ausgeben, dass eine DirectX-Datei fehlt. Sonst wäre das ein reines Ratespiel. :D

@Danilo
:shock: Ja damit funktioniert es tatsächlich. Vielen Dank! :) :allright:
Danilo hat geschrieben:Diese Zeile sollte man immer als erstes in allen Fullscreen-Anwendungen aufrufen
um Probleme zu vermeiden.
Wirklich immer? Liegt es eigentlich an PB? Wenn ja, hoffentlich wird dieser Bug bald behoben.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten