2010-01-05 13 views
0

J'essaye de redimensionner une fenêtre d3d d'une application externe, de mon application. Je peux redimensionner la fenêtre, mais le moteur d3d pense toujours à son 1024x768 ou à votre course. Je pensais à une injection de DLL, mais comment pourrais-je faire pour redimensionner la fenêtre.Comment redimensionner une application d3d à partir d'une application externe. (C#)

J'ai fait quelques recherches et je suis sûr que j'ai besoin de changer le BackBufferWidth et BackBufferHeight.

Des idées? Y at-il de bonnes bibliothèques DLL que je peux utiliser avec mon application C# pour faire des fonctions d3d faciles comme écrire à l'écran ou changer la résolution ou changer le tampon z des structures etc?

Répondre

0

Le redimensionnement d'un backbuffer/fenêtre direct3d à partir d'une application externe est une application non-TRIVIAL NON-SAFE.

« Teorically » vous devez:

1) Arrêter l'application (sinon vous pouvez aller dans des situations inattendues comme accident ou de conflits ou d'autres calamités)
2-DX9) Choisissez le dispositif utilisé pour créer le dispositif .
3-DX9) Réinitialisation d'appel sur le périphérique redimensionnant le backbuffer
4-DX9) Redimensionnez la fenêtre de l'application.
5-DX9) Redémarrez l'application.

2-DX10) Sélectionnez le swap-band DXGI de l'application.
3-DX10) Redimensionne la swapchain.
4-DX10) Redémarrez l'application. Mais rappelez-vous que tout cela serait inutile si l'application pense toujours qu'elle est dans une certaine résolution (comme utiliser une texture dégradée, ou essayer de redimensionner la fenêtre à sa résolution précédente ou qui sait quoi). En résumé, c'est un type de programmation très risqué et je pense que cela ne donnerait pas les résultats escomptés.


Pour écrire sur un est plus facile application déjà existante, juste faire une dll Direct3D pour injecter dans l'application au démarrage du temps et avant le présent mettre votre appel dessiner la police.