SharpDx - довольно тонкая оболочка для DirectX, и почти все в DirectX выражается в SharpDx как сквозной с некоторыми соглашениями об именах и вызовах для соответствия миру .net.
Реальной документации по SharpDx по существу не существует, поэтому вам придется делать то, что делают все остальные.Если вы начинаете с чего-то в SharpDx, то посмотрите непосредственно на списки API SharpDx и файлы заголовков, чтобы понять, какие основные функции DirectX выражаются.Получив название функции DirectX, вы можете прочитать документацию MSDN, чтобы понять, как работает эта функция.Если вы начинаете с чего-то в DirectX, то сначала посмотрите на MSDN, чтобы понять, как оно работает и как оно названо, а затем перейдите к API-интерфейсу SharpDx и заголовочным файлам, чтобы узнать, как эта функция упакована (названа и представлена) в SharpDx.
По конкретному вопросу, который вы задаете, Нумерация устройств SharpDx идентифицирует версию Direct3D, которая упаковывается .
Direct3D 11.1 device
==> ID3D11Device1
==> SharpDX.Direct3D11.Device1
Direct3D 11.2 device
==> ID3D11Device2
==> SharpDX.Direct3D11.Device2
Direct3D 11.3 device
==> ID3D11Device3
==> SharpDX.Direct3D11.Device3
и т. Д.
Естественно, каждая версия имеет немного другой («улучшенный») интерфейс.Меньшие номера версий будут работать практически везде, а более высокие номера версий включают дополнительные функции, которые могут потребовать чего-то определенного от вашей видеокарты и / или вашей операционной системы.Вы можете прочитать об API для каждой версии в найденных разделах здесь .
Например, описание новых методов, добавленных в интерфейс ID3D11Device5 (т. Е. Что нового с ID3D11Device4): здесь .В этом случае Device5 добавляет возможность создания объекта забора и открытия ручки для общего забора.
Когда в примере кода используется конкретный номер устройства, обычно это связано с тем, что для кода требуются некоторые функции, которых не было в предыдущей версии Direct3D.Как правило, вы хотите использовать устройство с наименьшим номером (и фабрикой и т. Д.), Поскольку это позволит вашему коду работать на самых разных машинах и видеокартах.
Если вы найдете пример кода, который создает SharpDX.Direct3D11.Device1
, но, похоже, не использует какие-либо методы, кроме SharpDX.Direct3D11.Device
, это, вероятно, по одной из двух причин.Во-первых, автор может знать, что в следующем примере потребуется метод или поле, которых не было до Direct3D 11.1.Во-вторых, автор может знать, что каждая видеокарта и операционная система, способная запустить пример, будут способны работать с Direct3D 11.1.
Для человека, только начинающего, я бы предложил вам просто придерживаться Direct3D (и Direct2D) версии 11.1, то есть DXGI.Device1
, SharpDX.Direct3D11.Device1
и SharpDX.Direct3D11.DeviceContext1
.Они могут работать на любой машине, с которой вы столкнетесь.Увеличивайте номер версии только в том случае, если вам действительно нужны некоторые функции, которых нет в этой версии.
Один дополнительный совет: если вы читаете ветку о какой-то функциональности Direct3D или Direct2D и не можете ее найтигде-нибудь в SharpDx, посмотрите на API Direct3D, чтобы увидеть, какой номер версии впервые содержит эту функцию.Затем проходите через SharpDx API (или, что еще лучше, файлы заголовков) для этой версии, пока не увидите элемент с аналогичным именем.Он может быть обернут неожиданным образом, но AFAIK - все это открыто, даже когда вам трудно его найти.