なぜ OpenGL を使用しないのですか? DirectX が行うすべての機能をサポートします。 DirectX を使用する特別な理由はありますか?理由としては、Microsoft は DirectX を作成しましたが、Linux での実行を許可する必要性を認識していなかったと思います。
Wine を使用して Linux で DirectX ゲームを実行できます。 MonoGame を使用して Linux で XNA をプログラミングできます。ただし、これらはすべて OpenGL を使用して、ハードウェア アクセラレーションによるレンダリングを提供します。私の知る限り、OpenGL は予見可能な将来の Linux での唯一のオプションでした (そしておそらくそうなるでしょう)。
独自の DirectX 実装を作成することは可能ですか?確かに - しかし、それにはドライバーの作成、独自の知識、そしておそらくコストがかかりすぎて、誰もがそれから本当に利益を得ることができません.
編集:最近では、DXVK は Linux で DirectX アプリケーションを実行するための非常に現実的でパフォーマンスの高い方法です。
DirectX は一連の API です:
- Direct3D (3D グラフィックスの描画)
- DirectX グラフィック インフラストラクチャ (アダプターとモニターの列挙とスワップ チェーンの管理)
- Direct2D (2D グラフィックスの描画)
- DirectWrite (フォント)
- DirectCompute (GPU コンピューティング)
- DirectSound3D (3D サウンドの再生)
- DirectX メディア (2D/3D Web アニメーション用の DirectAnimation、マルチメディアの再生とストリーミング メディア用の DirectShow、Web 双方向性用の DirectX Transform、および高レベルの 3D グラフィック用の Direct3D Retained Mode)
- DirectX 診断 (オーディオ、ビデオ、入力ドライバーなど、DirectX に関連するコンポーネントに関するレポートを診断および生成するためのツール)
- DirectX メディア オブジェクト (エンコーダー、デコーダー、エフェクトなどのストリーミング オブジェクトのサポート)
- ダイレクト セットアップ (DirectX コンポーネントのインストール、および現在の DirectX バージョンの検出)
DirectX コンポーネントは非推奨ですが、まだサポートされています
- DirectDraw
- DirectInput
- DirectPlay
- ダイレクト サウンド
- DirectMusic
ご覧のとおり、DirectX スイートの API の多くの部分は、Linux 用に作成されたドライバーの機能で書き直す必要があります。また、DirectX スーツの一部は Windows OS を呼び出す可能性が高く、そのコードは、DirectX または Windows OS のコピーで書かれた部分を侵害することなく、Linux マシン用に書き直す必要があります。
はい、Linux 用の DirectX と同じ種類のことを行うオープン ソース API スーツを作成することはできますが、Linux 用のサウンドおよびグラフィック ドライバー/メーカーによるサポートに関する十分な知識がなければ、それを行うのは非常に難しい作業です。
ただし、「DirectX で作成されたゲームやプログラムを Linux で実行できるようにするために、何かを取得/作成できますか?」という質問が多かった場合は、つまり、著作権侵害の可能性が高いため、いいえです。
私の知る限り、DirectX には 3 つの部分が含まれています
- ベンダー ドライバ (DX で定義された低レベル API を提供)
- DirectX ライブラリ (DX によって定義された低レベル API を使用してハードウェアにアクセスし、DirectX API を提供します)
- ソフトウェア (ゲームなど、DirectX API を使用)
Linux では DX で定義された低レベル API を提供するドライバーが存在しないため、DirectX ライブラリを提供することも可能ですが、適切なベンダー ドライバーがないと機能せず、ベンダーが存在するかどうかもわかりません。ハードウェア プラットフォーム用に作成します。
2019 年のあなたの質問は間違っています。DXVK は、Vulkan と Wine を使用した Linux 用の D3D11 および D3D10 実装の実装です
また、mesa にはネイティブの Direct3D 9 実装がありますが、私の知る限り、wine 以外は誰も使用していません