Хуки для Direct3D 6.1 для замены EMBM шейдерами

Я пишу Windows Hooks для DirectX 6.1. Я хочу перехватывать вызовы EMBM (Environment Mapped Bump Mapping) и передавать данные собственному шейдеру рельефа, чтобы приложения, зависящие от EMBM, работали правильно. Единственная проблема в том, что DX 6.1 вообще не поддерживает шейдеры. Я не могу просто заменить Direct3DDevice3 классом из более нового SDK, потому что его методы используют разные наборы аргументов, и приложение, использующее мою подключенную dll, рухнет. Я не знаю, как обходной путь через. Я не так хорош в DirectX (может быть, есть более эффективный способ реализации bump в DX 6.1, который будет работать на современном оборудовании?) Может быть, можно запросить какой-то интерфейс в D3Device, который позволит мне использовать шейдеры?

Все, что может указать мне в правильном направлении, будет высоко оценено.


person PiotrK    schedule 31.10.2009    source источник


Ответы (1)


Каждое устройство Direct 3D происходит непосредственно от IUnknown, поэтому вы не можете выполнять QI с устройства v6 на устройство v9.

Единственный способ сделать то, что вы хотите (выше уровня драйвера), — реализовать все устройство v6 и преобразовать все вызовы в их эквиваленты v9. Конечно у вас тогда возникнут проблемы, если игра реализует embm через v7 или v8...

person Goz    schedule 02.11.2009