Крючки для Direct3D 6.1 заменят EMBM шейдерами - PullRequest
0 голосов
/ 01 ноября 2009

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

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

1 Ответ

1 голос
/ 02 ноября 2009

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

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

...