¿Superposición de DirectX en pantalla completa? Si.. otra vez c#
c++ overlay (2)
Hice esto en Delphi hace años. Las únicas opciones en ese momento eran inyectar una DLL nativa de Win32 en el proceso, el proceso llamaría a mis funciones de DirectDraw de DLL y el resto a la DirectDraw real. Esta era la única forma en que podía garantizar que funcionaría si el programa cambiaba la pantalla completa a / desde Windows. Mi DLL crearía un espacio de archivo compartido en memoria para comunicarse entre él y mi programa.
La razón por la que hice esto fue para escribir en el juego a las personas que hablan en TeamSpeak o Ventrilo.
Sin embargo, este método no es posible con los objetos de tiempo de ejecución de CLR. Su única opción es examinar C ++ Native DLL Injectrion / Wrapping.
Parece que esta pregunta se ha formulado varias veces en un contexto diferente y he logrado algunos avances en la creación de una superposición para un juego (Esto es para datos informativos, etc.). También me gustaría hacerla interactiva como Steam y XFire.
Me las arreglé para obtener una superposición para un juego de Directx mientras está en modo ventana ... un poco.
He mirado todo el desbordamiento de pila y google sin mucha suerte.
Si es necesario, puedo probar esto en C ++ en lugar de C #. Sé C # pero no me considero un profesional de ninguna manera. Solo necesito una mejor explicación. Heck, estaré dispuesto a armar un buen screencast / tutorial si puedo hacer que esto funcione correctamente.
NOTA: Realmente me gustaría hacer esto con un código nativo en lugar de una biblioteca, pero si hay una buena biblioteca gratuita por ahí, me gustaría echarle un vistazo.
Ejemplos: ¿Cómo superponer gráficos en juegos de Windows?
http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=359794
C # "Bloquear" una forma de superposición a la posición de otra ventana
Más información: Me las arreglé para obtener un formulario de Windows para superponer una ventana de juego y establecer su padre con SetParent. Sin embargo, esto no funciona muy bien porque no funcionará en pantalla completa y la transparencia no funcionó. (Básicamente tenía una clave de transparencia y el valor TopMost se estableció en VERDADERO). Realmente me gustaría encontrar un método diferente.
Sugiero usar el método RenderToSurface de la biblioteca DirectShow. Tiene casi todo lo que buscas. (DirectX Surface Drawing).
http://www.experts-exchange.com/Programming/Game_Development/Game_Graphics/DirectX/Q_20410452.html (Un ejemplo)