Если код использует D3D9, он всегда будет использовать d3d9.dll
в некоторый момент. Обычно это в таблице импорта, но она может быть динамически связана (LoadLibrary
). d3d9.dll
предоставляет код инициализации для D3D (и COM, когда это необходимо) и экспортирует Direct3DCreate9
, чтобы создать новый IDirect3D9Object
.
d3d9.dll
используется независимо от версии, версия указывается путем передачи D3D_SDK_VERSION
в Direct3DCreate9
в качестве единственного параметра. Это указывает, какую версию следует использовать, а не имена DLL.
Чаще всего пронумерованные файлы - это файлы D3D X . Они версионированы, с _43, ссылающимся на SDK за июнь 2010 года (я полагаю, что каждый выпуск SDK имеет один). Если программе нужны вспомогательные функции, предоставляемые в D3DX, последняя версия из SDK обычно связана с номерами, разделяющими их.
Файлы D3D9_ [число], которые не являются частью D3DX, следуют одной и той же системе (и, вероятно, имеют одинаковое отношение версии SDK к номеру) и аналогичным образом предоставляют специфичные для версии функции.
Это не значит, что d3d9.dll
не используется; огромное количество программного обеспечения использует этот файл (на самом деле, я лично не видел приложение D3D9, которое этого не делало). Связывание с D3D9.dll и передача версии SDK является правильным и рекомендуемым методом использования D3D9. Проверка на это безопасна и надежна, и самый простой способ проверить версию - перехватить вызов на Direct3DCreate9
.