0

シェーダーを使用している OpenGL アプリケーションがあります。グラフィック カードとドライバーがインストールされているデスクトップでは正常に動作しますが、GPU が無効になっているとアプリケーションが実行されず、ウィンドウの作成後にクラッシュします。以下の理解と疑問があります。

  • GLSL コンパイラは GPU ベンダーによって提供されるため、GPU ドライバーが見つからないとアプリケーションがクラッシュします。

  • これは、GPU のないシステムでは、シェーダーを使用する OpenGL アプリケーションが実行されないということですか? 私の理解では、GPU は fps を強化するだけであり、アプリは GPU なしでも実行する必要があります。

4

3 に答える 3

1

前述のように、誰かがターゲット プラットフォーム/システムに OpenGL 実装を提供する必要があります。通常、これはグラフィックス ドライバーによって行われますが、ソフトウェア実装 (mesa など) も利用できます。

さらに、アプリケーションを実行するには、特定の OpenGL 機能の可用性を確認する必要があります。これは、シェーダーなどの一部のものは、すべてのドライバー/実装/ハードウェアで利用できない場合があるためです。別の言い方をすれば、OpenGL 実装 (通常は共有ライブラリ) の可用性は、シェーダーの可用性を示すものではありません。

私の知る限り、GPU が利用できない場合、ほとんどの実装は「ソフトウェア フォールバック」を提供しません。Mesa はサポートしていますが、OpenGL 3.1 のみを提供しており、ソフトウェア レンダリングのシェーダー サポートがどの程度優れているかはわかりません。進行中の作業だと思います。

于 2013-07-05T08:35:00.857 に答える
0
  • GLSL コンパイラは GPU ベンダーによって提供されるため、GPU ドライバーが見つからないとアプリケーションがクラッシュします。

技術的には、GLSL コンパイラは、十分に高いバージョンの適合 OpenGL 実装の一部です。しかし、それは本質的に、あなたが言ったことに対する大げさな言葉です。そう:はい

  • これは、GPU のないシステムでは、シェーダーを使用する OpenGL アプリケーションが実行されないということですか?

プログラムに必要な機能を備えた OpenGL 実装が必要です。ほとんどの OpenGL 実装は、GPU と、OpenGL による GPU との対話を可能にする (薄い) ドライバー層の組み合わせの形で行われます。

  • 私の理解では、GPU は fps を強化するだけであり、アプリは GPU なしでも実行する必要があります。

うーん、その考えは間違っています。GPU は単なる「パフォーマンス エンハンサー」ではありません。GPU はフル機能の処理プラットフォームであり、OpenGL のすべてのバージョンは、GPU と同様に、この種のプロセッサを使用して実装されるように設計されています。ソフトウェア エミュレーションがありますが、それらは遅く、多くの場合機能が完全ではありません。

実際、OpenGL は常にある種の GPU を使用して実装されることになっていました。OpenGL の最初のバージョンは、実際には、SGI ハードウェア グラフィック ラスタライザーのレジスタとコマンドの文字どおり 1:1 のユーザー空間 API でした。初期の OpenGL トークンのいくつかでさえ、数値が SGI ハードウェアの制御レジスタに入れられています。

于 2013-07-05T10:12:57.927 に答える
0

OpenGL アプリを実行するには、OpenGL 呼び出しを理解するドライバーが必要です。ドライバーをエミュレートするソフトウェアをインストールすれば、GPU なしでアプリを実行できます。1つはMesa AFAIKで、MesaのWindowsバージョンもあり、もう1つはtransgamingのSwiftshaderですが、後者は商用ソフトウェアです。

于 2013-07-05T07:12:14.033 に答える