Как и насколько сложно было бы создать драйверы поставщика DirectX для Linux?

Как видно из этой темы, кажется, что недостающая часть для возможности запуска DirectX в Linux изначально используются драйверы поставщиков.

Что такое драйвер производителя? Являются ли они драйверами, взаимодействующими с конкретной моделью компонента, семейством или даже любым из них? Чем они закодированы? ASM и C скорее всего?

Как кто-то (или группа) может создать эти драйверы для Linux? Как их можно интегрировать в Linux? Нужны ли игры или приложения, созданные для Windows и использующие DirectX, для Linux? Будут ли компании, создающие игры, создавать свои игры для Linux, зная, что их можно использовать без каких-либо изменений или с небольшими изменениями?

Насколько сложно будет сделать эти драйверы? Сколько времени это займет? Требуются ли для этого какие-то особые знания?

Я знаю, что это вызывает много вопросов, но мне очень любопытно, почему ни одна большая группа никогда серьезно не работала над этим (хотя должна быть веская причина).

Заранее большое спасибо за ваши ответы!

РЕДАКТИРОВАТЬ: Это ни в коем случае не является подстрекательством к дебатам, например, OpenGL против DirectX или Windows против Linux. Читая FAQ, я действительно не понимаю, почему эта ветка неконструктивна, поскольку она задает довольно меткие вопросы, на которые нужно быстро ответить.


person Tristan Bourvon    schedule 24.03.2013    source источник
comment
Вы прочитали ответ на вопрос, который вы неправильно связали. (Я думаю, вы читали маркированные списки и невнимательно читали текст под ними. Там сказано даже если возможно предоставить библиотеку DirectX, но она не будет работать без надлежащего драйвера поставщика. ) Драйверы поставщиков не могут быть записаны до тех пор, пока не будет написана версия DirectX. DirectX — это технология Microsoft, а Linux вместо этого использует другие (непатентованные) форматы.   -  person Ken White    schedule 24.03.2013
comment
@KenWhite Скажите мне, если я ошибаюсь, но это не означает, что реализация DirectX для Linux не может быть реализована, что и является целью моей темы: как только эта реализация будет завершена, как можно завершить процесс?   -  person Tristan Bourvon    schedule 25.03.2013


Ответы (1)


ИМХО, основная причина, по которой никто не беспокоится о работе с DirectX, заключается в том, что уже существует графическая библиотека (mesa в частном случае Linux), которая полностью поддерживает любую желаемую графическую операцию, также доступную с DirectX.

В отличие от следующего DirectX, который является спецификацией, основанной на так называемой интеллектуальной собственности, принадлежащей одной корпорации, API, используемый этой библиотекой, называемой openGL, является открытым стандартом, согласованным консорциумом производителей оборудования.

В отличие от философии ограничения его использования только одной операционной системой, которая, возможно, пытается приковать своих пользователей к одной и единственной платформе, openGL с самого начала задумывался как независимый от платформы API.

Следуя этому принципу, в отличие от того, что DirectX доступен только на одной одной платформе, openGL доступен на любой вычислительной платформе, начиная от систем на базе Android, Mac и многих других UNIXoid-систем, включая даже Linux. на Windows-машины.

Использование любого другого API, кроме openGL, нарушило бы эту независимость от платформы, что, вероятно, было бы воспринято не как прогресс, а как регресс.

Подводя итог, возможно, основными причинами предпочтения openGL по сравнению с DirectX являются следующие:

  • openGL — это открытый стандарт, а DirectX — проприетарный.

  • openGL доступен на любой платформе DirectX доступен только на одной платформе

  • любая операция, поддерживаемая DirectX, поддерживается и openGL.

  • если они действительно необходимы, вызовы DirectX могут быть предоставлены библиотекой-оболочкой, передающей операции в openGL, как, например, в WINE.

Сама по себе доступность реализации библиотеки DirectX не позволила бы запустить какой-либо двоичный код, предназначенный для платформы Windows, поскольку весь набор системных библиотек и инфраструктуры по-прежнему был бы недоступен. На самом деле даже используемый двоичный формат PE/COFF в Windows ELF в Linux отличается.

Попытки обеспечить полный уровень совместимости, включая необходимые системные библиотеки, уже предпринимаются. Как уже упоминалось выше, он называется WINE. (см.: http://www.winehq.org/)

Надеюсь, я привел вам несколько веских причин, по которым никто никогда не пытался (или не попытается) сделать то, что вы просили.

person mikyra    schedule 24.03.2013
comment
Спасибо за этот ответ, очень, очень хорошо написанный и информативный. Однако вы, кажется, указываете, что двоичный файл из Windows нельзя использовать в Linux изначально, и это правильно. Однако компилировался бы исходный код, если бы DirectX был кроссплатформенным? - person Tristan Bourvon; 25.03.2013
comment
Исходный код только зависит только от него, но, как уже говорилось, обычно в любой программе задействовано множество других библиотек, которые не будут доступны, поэтому, скорее всего, они не будут (скомпилированы) . - person mikyra; 25.03.2013