Вопрос

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

Я был бы очень признателен за все, что могло бы направить меня в правильном направлении.

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top