2010-08-23 13 views
15

Parece que esta pregunta se ha formulado varias veces cada una en un contexto diferente y he hecho algunos avances al hacer una superposición para un juego (Esto es para datos informativos, etc.). También me gustaría que sea interactiva como Steam y XFire.¿Superposición de DirectX a pantalla completa? Sí .. otra vez C#

He conseguido una superposición de un juego DirectX mientras que su en modo ventana ... un poco.

He mirado todo desbordamiento de pila y Google sin mucha suerte.

Si es necesario, puedo intentar esto en C++ en lugar de C#. Sé C# pero no me considero un profesional de ninguna manera. Solo necesito una mejor explicación. Diablos, estaré dispuesto a armar un buen screencast/tutorial si puedo hacer que esto funcione bien.

NOTA: Me gustaría hacer esto con código nativo en lugar de una biblioteca, pero si hay una buena biblioteca libre por ahí, me gustaría comprobarlo.

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

Más información: Me las arreglé para obtener un formulario de ventanas para superponer una ventana de juego con y establecer sus padres para que, 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 TopMost se estableció en TRUE.) Realmente me gustaría encontrar un método diferente.

+1

¿Cuál es su pregunta real? ¿Y ya has escrito algún código? No es probable que obtenga un tutorial de StackOverflow, pero obtendrá respuestas a preguntas específicas si las tiene. Además, no estoy seguro de que "intratable" sea la palabra que estás buscando. ¿Te refieres a "interactable"? –

+0

Estaba intentando investigar el problema de forma remota. Voy a obtener un código más tarde, por ejemplo. Trataré de hacer otra edición con más información también. Gracias. Y sí, quise decir Inter-actable. Spellcheck me falló. :) – Tyler

+0

También vea http://stackoverflow.com/questions/925981/overlaying-on-a-3d-fullscreen-application – aib

Respuesta

-1

sugiere emplear el Método RenderToSurface de la Biblioteca de DirectShow. Tiene prácticamente todo lo que estás buscando. (Dibujo de superficie DirectX).

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

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

+0

Gracias, estoy revisando esto. – Tyler

+0

Su primer enlace está roto. Es una página de suscripción que, por lo que sé, tiene poco que ver con la respuesta. – aib

+0

Entonces, ¿cómo sabría si tiene algo que ver con la solicitud? Considerando la pregunta original que parece que está comentando arbitrariamente sobre la base de una suposición. Experts Exchange, es un servicio pago de solución/respuesta para desarrolladores y programadores. Extracto: Cómo acceder a las superficies de un subproceso (programa) (secundarias) desde otro subproceso (programa). Creo que la captura de superficies DirectX es un secreto bien guardado./al menos no pude encontrar CUALQUIER información sobre el tema/ –

1

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 las funciones de DLL DirectDraw y yo enviaría el resto del proxy al DirectDraw real. Esta era la única forma en que podía garantizar que funcionaría si el programa cambia de pantalla completa a/desde la ventana. Mi archivo DLL crearía un espacio de archivos compartidos en la memoria para comunicarme entre él y mi programa.

La razón por la que hice esto fue escribir en el juego de las personas (s) que habla en TeamSpeak o Ventrilo.

Sin embargo, este método no es posible con objetos de tiempo de ejecución CLR. Su única opción es buscar en el Injectron/Wrapping nativo de C++.

+0

He pasado por el proceso de inyección. Mi problema es que quiero superponer vistas incrustadas de cromo (como ventanas electrónicas) sobre una aplicación DirectX de pantalla completa. ¿Alguna sugerencia sobre eso? – alDiablo

+0

No. Probablemente no funcionará. En el modo de pantalla completa, la aplicación tiene prioridad de pantalla completa, no puedes poner * superposición * en la parte superior. La única opción es hacer funciones de dibujo de DirectX en la aplicación en sí. –

Cuestiones relacionadas