Entwickler-Ecke
Multimedia / Grafik - Funktion für Fenstermodus
Flamefire - Fr 20.08.10 21:37
Titel: Funktion für Fenstermodus
Ich muss ein Spiel im Fenstermodus ausführen lassen. Nativ geht es nicht (nix gefunden)
Darum meine Idee, mal den Aufruf auf die DirectX Funktion zu ändern
Irgendwo muss er ja sagen Fenstermodus-JA/NEIN, oder?
Nach welcher Funktion muss ich suchen? Das Spiel selbst sagt mir "Direct 3D HAL"
Martok - Sa 21.08.10 01:33
Nö, geht nicht.
DirectX ist da etwas anders als OpenGL, welches keinen speziellen Vollbildmodus hat, sondern auch da ein Fenster erzeugt welches dann einfach nur maximiert wird.
DirectDraw ist da etwas rabiater und plättet u.a. den Desktop weg. Das liegt daran, dass sich DirectDraw normalerweise nicht mit GDI verträgt.
Müsstest das CreateWindow ändern und die Inititalisierung. Ein Codebeispiel gibts hier:
http://www.gamedev.net/reference/articles/article608.asp
Abschnit "2. Initializing DirectDraw" hat etwas Kot, mit recht umfangreichen Kommentaren.
Viel Spaß, am Ende wirds wohl eh nicht laufen ;)
Unter "A Few Details" steht dann auch was dazu, wie man das richtig programmiert. Sowas müsstest du dann reinpatchen. Es bietet sich hier wohl an, den passenden Code in eine DLL zu schreiben und diese in den Spieleprozess zu injecten...
Um welches gehts denn? EA hat z.B. in fast jedem Spiel eine Kommandozeilenoption, scheint bei denen Publish-Bedingung zu sein und heißt fast immer -windowed.
Eigentlich ist DirectDraw ein ganz schöner Müll. Dass OpenGL sooo viel einfacher ist, wusste ich ja gar nicht.
Delete - Sa 21.08.10 09:29
Für den Fenster-Modus muss man bestimmte BackBuffer-Formate nutzen oder anders herum, du darfst nicht A2R10G10B10 nutzen, denn das ist Fullscreen only. Ansonsten halt das standard Format X8R8G8B8...
Flamefire - Sa 21.08.10 12:16
In dem Fall geht es um thandor.
Ich will es debuggen (am besten mit ollydbg) um verschiedene Strukturen herauszufinden.
Nur klappen Breakpoints im Fullscreenmodus nicht.
Darum die ganzen Umstände.
Gibt leider keinen Schalter.
Intressant ist nur, dass er den CooperativeLevel erst auf Normal und dann auf FullScreen setzt. War aber auch nix zu machen.
Kann ich nicht irgendwie anders debuggen? In ner VM vl?
Delete - Sa 21.08.10 13:48
Was willst du denn genau machen? DirectX debuggen? Dazu startest du einfach das "DirectX Control Panel" und schaltest DirectX in den Debug-Mode.
Flamefire - Sa 21.08.10 15:41
Das Programm beinhaltet Dateien, die ich entpacken will.
Die Entpackroutinen findet man gut in der exe, nur sind die einfach nachzuvollziehn und zu kontrollieren, wenn das Programm läuft.
Das heißt in meinem Fall:
BP auf entpackroutine, starten, BP wird getriggert. Weiter gehts mit debuggen im Einzelschritt.
So weit die theorie. Die Praxis sieht so aus, dass der BP getriggert wird, das Programm stoppt, aber weils ja Vollbild ist, kann ich den Debugger nicht sehen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!