Как изменить размер приложения d3d из внешнего приложения.(С #) - PullRequest
0 голосов
/ 05 января 2010

Я пытаюсь изменить размер окна d3d из внешнего приложения, из моего приложения. Я могу изменить размер окна, но движок d3d по-прежнему считает его размером 1024x768 или ваш рабочий. Я думал, DLL-инъекция, но как мне изменить размер окна.

Я провел некоторые исследования и уверен, что мне нужно изменить BackBufferWidth и BackBufferHeight.

Есть идеи? Есть ли какие-нибудь хорошие библиотеки DLL, которые я могу использовать с моим C # -приложением для выполнения простых функций d3d, таких как запись на экран или изменение разрешения или изменение z-буфера структур и т. Д.

1 Ответ

0 голосов
/ 05 января 2010

Изменение размера обратного буфера / окна direct3d из внешнего приложения является нетривиальным небезопасным приложением.

«Теоретически» вы должны:

1) Остановите приложение (в противном случае вы можете столкнуться с неожиданными ситуациями, такими как сбой или конфликты, или другие бедствия)
2-DX9) Выберите устройство, использованное для создания устройства.
3-DX9) Сброс вызова на устройстве с изменением размера заднего буфера
4-DX9) Изменить размер окна приложения.
5-DX9) Перезапустите приложение

2-DX10) Выберите DXGI Swapchain из приложения.
3-DX10) Изменение размера цепочки подкачки.
4-DX10) Перезапустите приложение.

Но помните, что все это было бы в любом случае бесполезно, если бы приложение все еще считало, что оно находится в определенном разрешении (например, используя пониженную текстуру, или пытаясь изменить размер окна к своему предыдущему разрешению или кто знает что).

Подводя итог, это очень рискованный вид программирования, и я думаю, что он не даст ожидаемых результатов.


Чтобы писать в уже существующем приложении стало проще, просто сделайте DLL-библиотеку Direct3D для внедрения в приложение во время запуска, а перед этим сделайте вызов Font draw.

...