DirectX Overlay mit PB programmieren

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Das Problem ist dass man keinen Screen öffnen kann wenn das Spiel (in meinem Fall Day of Defeat: Source / DX9) im Vordergrund ist. OpenWindowedScreen () gibt dann null zurück. Der Screen muss geöffnet werden wenn man sich auf dem Desktop befindet.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Beitrag von Andreas21 »

Und was währ wenn man beim starten des Overlays den desktop an die auflösung des Spieles anpast und nach der erstellung wieder zurück setzt?
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Andreas21 hat geschrieben:Und was währ wenn man beim starten des Overlays den desktop an die auflösung des Spieles anpast und nach der erstellung wieder zurück setzt?
Ja, des geht tatsächlich. Man muss vor dem Öffnen des Screens die Desktopauflösung ändern und dann ein Delay() von mindestens 2000 Ms einfügen.

Code: Alles auswählen

; Change desktop resolution to game resolution
Define lpdm.DEVMODE\dmSize = SizeOf(DEVMODE)

lpdm\dmFields = #DM_BITSPERPEL | #DM_PELSWIDTH | #DM_PELSHEIGHT 
lpdm\dmBitsPerPel = 32
lpdm\dmPelsWidth = 1600
lpdm\dmPelsHeight = 900

ChangeDisplaySettings_(lpdm,0)

Delay(2000)
Allerdings ist es immer beschissen mit Delays zu arbeiten da die Zeiten auf jedem Computer unterschiedlich sind. Mann müsste irgendwie feststellen können wann die Auflösung erfolgreich umgestellt wurde.

Das nächste Problem wäre dann wie man den Inhalt des Overlays aktualisiert. Nach dem es erstellt wurde kann man nicht einfach auf das Sprite zeichnen. Man müsste das Sprite/Overlay löschen, neues Sprite erstellen, zeichnen und wieder Overlay erstellen. Ich glaube aber es geht vielleicht auch direkt per DD auf das Overlay zu zeichnen ohne alles zu löschen/neu erstellen zu müssen ist dann aber etwas "anspruchsvoller".
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Mann müsste irgendwie feststellen können wann die Auflösung erfolgreich umgestellt wurde.

man kann doch die aktuelle auflösung prüfen... sogar mit nativen PB mitteln...
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 »

Kaeru Gaman hat geschrieben:man kann doch die aktuelle auflösung prüfen... sogar mit nativen PB mitteln...
Damit kann man ermitteln wann die Auflösung erfolgreich geändert wurde? Wage ich zu bezweifeln ...

Ich meine sowas wie GetGadgetAttribute() in Verbindung #PB_Web_Busy. Also das man irgendwie einen booleschen Wert auslesen kann der angibt wenn das Ändern der Auflösung erfolgreich abgeschlossen wurde.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Damit kann man ermitteln wann die Auflösung erfolgreich geändert wurde?

türlich, du testst im 50ms abstand welche auflösung anliegt... /:->
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 »

Beispiel?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

meine Güte, geh ins Bett.
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 »

Was zum ..... :freak:

Sagt der der um 2:43 postet? Kommst du klar? Was soll diese unfreundliche, ausweichende Antwort? Ich habe lediglich um Beispielcode gebeten den du offenbar nicht im Stande bist zu liefern. Wenn zu dem Thema nichts beitragen kannst dann halt dich raus! :evil:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

weil du kurz vorher in einem anderen thread eine blöde bemerkung zu etwas fleißig umgebrochenem postingtext abgelassen hast.

und dann fragst du mit einem einzigen wort = wortkarg nach einem beispiel für etwas,
was 1. integriert werden müßte und 2. dir doch tausend mal geläufig sein sollte.

und das, ganz richtig, nach zweie nachts, wo ich mich wohl kaum noch hinsetze und nen beispielcode häcke,
den du selber erdenken können solltest, wenn ich deine fähigkeiten nicht grottentief überschätze.

meine schlußfolgerung war, du bist entweder zu müde oder zu duhn oder beides.
daher mein meiner ansicht nach angemessener rat, erstmal ins bett zu gehen.

war das jetzt nachvollziehbar?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten