2010-08-23 5 views
15

Es sieht so aus, als ob diese Frage mehrmals in einem anderen Kontext gestellt wurde und ich habe einige Schritte unternommen, um ein Overlay für ein Spiel zu erstellen (Dies ist für informative Daten, etc ..). Ich würde es auch gerne interaktiv machen wie Steam und XFire.Vollbild DirectX Overlay? Ja .. wieder C#

Ich habe es geschafft, ein Overlay für ein DirectX-Spiel zu bekommen, während es im Fenstermodus ist ... irgendwie.

Ich habe überall über Stapelüberlauf geschaut und google ohne viel Glück.

Bei Bedarf kann ich dies in C++ anstelle von C# versuchen. Ich kenne C#, aber ich halte mich selbst nicht für einen Profi. Brauche einfach eine bessere Erklärung. Heck Ich werde bereit sein, einen schönen Screencast/Tutorial zu erstellen, wenn ich das richtig machen kann.

HINWEIS: Ich würde das gerne mit nativem Code und nicht mit einer Bibliothek tun, aber wenn es eine gute freie Bibliothek gibt, würde ich das gerne überprüfen.

Beispiele: How to overlay graphics on Windows games?

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794

C# "Lock" an overlay form to the position of another window

Mehr Info: ich ein Spielfenster zu überlagern mit schaffte es zu einem Windows Form erhalten und legen Sie seine Eltern, dass mit SetParent. Dies funktioniert jedoch nicht sehr gut, da es im Vollbildmodus überhaupt nicht funktioniert und die Transparenz nicht funktioniert. (hatte grundsätzlich einen Transparenzschlüssel und die TopMost wurde auf TRUE gesetzt.) Ich würde wirklich gerne eine andere Methode finden.

+1

Was ist Ihre eigentliche Frage? Und hast du schon irgendeinen Code geschrieben? Es ist unwahrscheinlich, dass Sie ein Lernprogramm aus StackOverflow erhalten, aber Sie erhalten Antworten auf bestimmte Fragen, wenn Sie sie haben. Ich bin mir auch nicht sicher, "hartnäckig" ist das Wort, das Sie suchen. Meinst du "interaktiv?" –

+0

Ich habe versucht, das Problem aus der Ferne zu untersuchen. Ich werde später zum Beispiel etwas Code bekommen. Ich werde versuchen, einen weiteren Schnitt mit mehr Informationen zu machen. Vielen Dank. Und ja, ich meinte Interactable. Die Rechtschreibprüfung hat mich enttäuscht. :) – Tyler

+0

Siehe auch http://stackoverflow.com/questions/925981/overlaying-on-a-3d-fullscreen-application – aib

Antwort

-1

Ich empfehle die Verwendung der RenderToSurface-Methode der DirectShow-Bibliothek. Es hat so ziemlich alles was du suchst. (DirectX Oberflächenzeichnung).

http://www.experts-exchange.com/Programming/Game_Development/Game_Graphics/DirectX/Q_20410452.html (Ein Beispiel)

http://msdn.microsoft.com/en-us/magazine/cc164112.aspx

+0

Danke, ich überprüfe das. – Tyler

+0

Ihre erste Verbindung ist kaputt. Es ist eine Abonnementseite, die soweit ich weiß, wenig mit der Antwort zu tun hat. – aib

+0

Wie würden Sie dann wissen, ob es etwas mit der Anfrage zu tun hat - in Anbetracht der ursprünglichen Frage scheint es, dass Sie willkürlich kommentieren, basierend auf einer Annahme. Experts Exchange ist ein kostenpflichtiger Antwort-/Lösungsdienst für Entwickler und Programmierer. Auszug: Zugriff auf die (sekundären) Oberflächen eines Threads (eines Programms) von einem anderen Thread (Programm). Ich denke, die DirectX Oberflächenerfassung ist ein gut gehütetes Geheimnis./zumindest konnte ich keine Informationen über das Thema finden/ –

1

Ich tat dies in Delphi Jahren. Die einzigen Optionen zu der Zeit waren, eine native Win32 DLL in den Prozess zu injizieren, würde der Prozess meine DLL DirectDraw Funktionen aufrufen und ich würde den Rest zum realen DirectDraw proxy. Nur so konnte ich garantieren, dass es funktionieren würde, wenn das Programm den Vollbildmodus von/nach Fenster wechselt. Meine DLL würde einen gemeinsamen Speicherplatz im Speicher für die Kommunikation zwischen ihr und meinem Programm erstellen.

Der Grund, warum ich das getan habe, war im Spiel die Personen zu schreiben, die in TeamSpeak oder Ventrilo sprechen.

Diese Methode ist jedoch nicht mit CLR-Laufzeitobjekten möglich. Ihre einzige Option ist in C++ Native DLL Injectrion/Wrapping zu sehen.

+0

Ich habe den Injektionsprozess durchlaufen. Mein Problem ist, dass ich Chrom eingebettete Ansichten (wie Elektronenfenster) über eine Vollbild-DirectX-App legen soll. Irgendwelche Hinweise darauf? – alDiablo

+0

Nein. Wahrscheinlich wird nicht funktionieren. Im Vollbildmodus hat die Anwendung Vollbildpriorität, Sie können kein * Overlay * darüber legen. Die einzige Möglichkeit besteht darin, DirectX-Zeichenfunktionen in der App selbst vorzunehmen. –