2010-08-23 10 views
15

Sembra che questa domanda sia stata posta più volte in un contesto diverso e ho fatto qualche passo avanti nel fare una sovrapposizione per un gioco (Questo è per i dati informativi, ecc.). Mi piacerebbe anche renderlo interoperabile come Steam e XFire.Overlay DirectX a schermo intero? Sì .. di nuovo C#

Sono riuscito a ottenere un overlay per un gioco directx mentre era in modalità finestra ... un po '.

Ho cercato over over stack e google senza molta fortuna.

Se necessario, posso provare questo in C++ anziché C#. Conosco C# ma non mi considero un professionista in alcun modo. Ho solo bisogno di una spiegazione migliore. Diamine sarò disposto a mettere insieme un bel screencast/tutorial se riesco a farlo funzionare correttamente.

NOTA: Mi piacerebbe molto farlo con codice nativo piuttosto che con una libreria, ma se c'è una buona libreria gratuita, vorrei verificarla.

Esempi: 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

More info: Sono riuscito a ottenere una forma di Windows per sovrapporre una finestra di gioco con e impostare il suo genitore a quella con SetParent. Questo però non funziona molto bene perché non funziona affatto a schermo intero e la trasparenza non ha funzionato. (Fondamentalmente aveva un tasto trasparenza e il TopMost era impostato su TRUE.) Mi piacerebbe davvero trovare un metodo diverso.

+1

Qual è la tua domanda attuale? E hai ancora scritto un codice? Non è probabile che tu riesca a ottenere un tutorial da StackOverflow, ma riceverai risposte a domande specifiche se ne hai. Inoltre, non sono sicuro che "intrattabile" sia la parola che stai cercando. Intendi "interabile?" –

+0

Stavo provando a ricercare il problema da remoto. Ad esempio, riceverò del codice più tardi. Proverò a fare un'altra modifica con ulteriori informazioni. Grazie. E sì, intendevo Inter-Actable. Il controllo ortografico mi ha fallito. :) – Tyler

+0

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

risposta

-1

Suggerisco di utilizzare il metodo RenderToSurface della libreria DirectShow. Ha praticamente tutto ciò che stai cercando. (Disegno superficie DirectX).

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

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

+0

Grazie, lo sto verificando. – Tyler

+0

Il tuo primo collegamento è rotto. È una pagina di abbonamento che, per quanto posso dire, ha poco a che fare con la risposta. – aib

+0

Allora, come faresti a sapere se ha qualcosa a che fare con la richiesta - considerando la domanda iniziale sembra che tu stia commentando arbitrariamente sulla base di un'ipotesi. Experts Exchange, è un servizio di risposta/soluzione a pagamento per sviluppatori e programmatori. Estratto: come accedere alle superfici (secondarie) di un thread (altro) da un altro thread (programma). Penso che l'acquisizione di superfici DirectX sia un segreto ben tenuto./almeno non sono riuscito a trovare NESSUNA informazione sull'argomento/ –

1

ho fatto questo a Delfi anni fa. L'unica opzione al momento era quella di iniettare una DLL nativa Win32 nel processo, il processo chiamava le mie funzioni DLL DirectDraw e io potevo delegare il resto al vero DirectDraw. Questo era l'unico modo in cui potevo garantire che avrebbe funzionato se il programma cambiava schermo intero da/a finestra. La mia DLL creerebbe uno spazio file condiviso in memoria per comunicare tra esso e il mio programma.

La ragione per cui l'ho fatto è stata quella di scrivere in gioco le persone che parlano in TeamSpeak o Ventrilo.

Tuttavia, questo metodo non è possibile con gli oggetti di runtime CLR. L'unica opzione è esaminare C++ Native DLL Injectrion/Wrapping.

+0

Ho passato il processo di iniezione. Il mio problema è che voglio sovrapporre le viste cromo incorporate (come le finestre electron) su un'app directx a schermo intero. Qualche suggerimento su questo? – alDiablo

+0

No. Probabilmente non funzionerà. Nella modalità a schermo intero, l'applicazione ha la priorità a schermo intero, non è possibile aggiungere alcuna * sovrapposizione * sopra. L'unica opzione è rendere le funzioni di disegno DirectX nell'app stessa. –