SharpDX
SharpDX — это альтернатива Managed DirectX, которая не требует установки в GAC и позволяет собрать проект с профилем "AnyCPU". Также, SharpDX — это самая быстрая из всех доступных управляемых библиотек по работе с DirectX"
Именно такими словами заканчивается описание новой, управляемой версии DirectX — SharpDX.
О проекте
SharpDX — альтернатива устаревшему Managed DirectX от Microsoft. Что примечательно, практически весь исходный код библиотеки автоматически генерируется на основании оригинальных файлов-заголовков DirectX. По словам автора, данный способ позволяет библиотеке быть более стабильной и находиться в соответствии с текущей версией DirectX SDK.
Особенности
- Ключевыми особенностями проекта являются:
- Полное соответствие текущей версии DirectX SDK
(поскольку, как сказано выше, библиотека собирается автоматически, программой-генератором, на основе оригинальных заголовочных файлов) - Поддержка следующих API:
- Direct3D10
- Direct3D10.1
- Direct3D11
- Direct2D1
- DirectWrite
- D3DCompiler
- DXGI
- DXGI 1.1
- DirectSound
- XAudio2
- XAPO
- SlimMath (прямое заимствование из SlimDX)
- Независимое от платформы, полностью управляемое API
(библиотека компилировалась с профилем AnyCPU, поэтому ваш код будет работать на обоих платформах (x86, x64) без перекомпиляции) - Библиотека разбита на несколько легковесных сборок
(корневая сборка — SharpDX — включает в себя набор базовых и общих классов для всех зависимых «дочерних» сборок: Direct3D10, Direct3D11, DXGI, D3DCompiler, и т.д. Таким образом обеспечивается минимальный размер зависимостей для проекта) - Быстрое взаимодействие с неуправляемым кодом
(C++/CLI не используется вообще, при этом производительность выше, чем у существующих управляемых API) - Именование классов практически повторяет SlimDX API
(данный факт можно рассматривать как преимущество, в случае если у вас есть SlimDX-проект и вы бы хотели перевести его на SharpDX. Автор указывает, что для такого перехода хватает банального «Find-Replace») - Прямой контроль над продолжительностью жизни DirectX-объектов
(вы напрямую контролируете объекты, создаваемые на «неуправляемой стороне». SharpDX не использует никаких механизмов типа ObjectTable или RCW, тем самым снижая потери в производительности. Применяется классическая схема, когда COM-объекты освобождаются по вызову метода Release) - Возможность обфускации и слияния сборок
(поскольку «Mixed» режим кода не используется, вы можете легко обфусцировать саму библиотеку, а также без труда сможете произвести слияние сборок библиотеки в конечный .exe) - Опциональная сборка SharpDX.Error для получения информации об ошибках на стороне DirectX
(будет очень удобна для разработчиков, поскольку возвращает не только полученный код ошибки, но и подробное ее описание)
Примеры
Как и в случае SlimDX, данная библиотека поставляется с примерами, которые доступны на специальной странице проекта.
Ссылки
- Страница проекта SharpDX на Google Code
- Статья про библиотеку на википедии
- Блог разработчика
- Галерея примеров
- Managed DirectX от Microsoft
- SlimDX

