На самом деле все очень просто: если вы используете Windows Vista / Server 2008 или более позднюю версию, у вас есть «DirectX 10» API. Если вы работаете в Windows Vista / Server 2008 с пакетом обновления 1 или более поздней версии, у вас есть «DirectX 10.1» API.
Ни один из этих ответов не отвечает на более полезный вопрос: имеется ли в системе видеоустройство и драйвер, совместимый с DirectX 10?
Действительно, единственный верный способ обнаружить это - создать устройство. Если вы можете (а) найти D3D10.DLL
и (б) вызов на D3D10CreateDevice
, то у вас есть и DirectX 10 API, и 10-совместимое устройство.
Аналогичным образом, если вы можете (а) найти D3D10_1.DLL
и (б) вызов D3D10CreateDevice1
, то у вас есть и DirectX 10.1 API, и устройство, совместимое с 10.0 или 10.1.
DirectX 11.0 или более поздняя версия всегда присутствует в Windows 7 / Server 2008 R2 или более поздней версии. Опять же, если вы можете (а) найти D3D11.DLL
и (б) вызов на D3D11CreateDevice
, то у вас есть и DirectX 11 API, и 11-совместимое устройство с некоторым уровнем возможностей . Параметры устройства create будут определять, какие уровни функций разрешены. Эта процедура также работает для обнаружения случая, когда вы работаете в системе Windows Vista / Server 2008 с пакетом обновления 2 (SP2) с применением обновления KB97644 .
Если у вас есть ID3D11Device
, вы можете использовать QueryInterface для ID3D11Device1
, чтобы увидеть, имеет ли система DirectX 11.1 (Windows 8 / Server 2012 или Windows 7 / Server 2008 R2 с KB2670838 или ID3D1Device2
чтобы увидеть, есть ли в системе DirectX 11.2 (Windows 8.1 / Server 2012 R2)
См. Развертывание Direct3D 11 для разработчиков игр
Концепция «Какая версия DirectX установлена» устарела и восходит к эпохе Windows 9x / ME. Запуск «Переадресации среды выполнения для конечного пользователя DirectX» делает некоторые вещи, но он никогда не устанавливает новую версию DirectX. См. Not So DirectSetup . Среда выполнения DirectX является чисто функцией уровня исправлений ОС и существует с ~ 2004 года. См. Что входит в номер версии? .