0

重複の可能性:
OpenGL は最低レベルでどのように機能しますか?

たとえば Windows プラットフォーム用の OpenGL ライブラリを使用するプログラムを作成し、OpenGL をサポートするグラフィックス カードを使用すると、次のようになります。

  1. グラフィックスと OpenGL をリンクするプログラミング言語 (Visual C++ など) でプログラムを開発しました。

  2. ターゲット プラットフォーム (Windows など) 用にプログラムをコンパイルおよびリンクします。

  3. プログラムを実行すると、OpenGL をサポートするグラフィック カードがあるため、同じ Windows にインストールされているドライバーが同じグラフィックを管理します。これを行うには、CPU が必要なデータをグラフィック カード (NVIDIA GPU など) のチップに送信するときに、結果をスケッチします。

  4. このコンテキストでは、グラフィックス アクセラレーションについて説明し、グラフィック表現のフレーム バッファ エンドを計算する作業を CPU にダウンロードします。

  5. この環境で、GPU のドライバーがデータを受信すると、GPU の機能をどのように活用して描画を高速化しますか? 受信した命令とデータを CUDA 言語タイプに変換して、並列処理機能を活用しますか? それとも、CPU から受信したデータをデバイス メモリの特定の領域にコピーするだけですか? この部分がよくわかりません。

  6. 最後に、OpenGL をサポートするカードを使用している場合、Windows にインストールされているドライバーは問題を検出しますか? CPU エラーが発生しますか、それともフレームバッファを計算しますか?

4

2 に答える 2

2

あなたはコンピュータゲームサイトで働いたほうがいい. 彼らは、3D グラフィックスがどのように機能するか、およびゲームやドライバーでエラーが発生した場合に「アーティファクト」がどのように表示されるかについての記事を頻繁に提供しています。

Mesa や Gallium などの 3D ライブラリのアーキテクチャに関する記事も読むことができます。

全体的なドライバーには、Direct 3D、OpenGL、またはその他の標準 API の特定の機能またはその機能を実装するための一連のメソッドがあります。ロード中に、ハードウェアをチェックします。安いビデオカードでも高価なビデオカードでも、最近のものでも 3 年前にリリースされたものでもかまいません。それは別のハードウェアです。そのため、ドライバーは各 API 機能を、特定のコンピューターで使用できる実装、GPU による高速化、SSE4 などの CPU による高速化、またはより基本的な実装にマッピングしようとします。

次に、ドライバーは GPU 負荷を推定しようとします。機能を高速化できる場合もありますが、GPU (特にローエンドのもの) がすでに他のタスクによって過負荷になっている場合、GPU タイムスロットを待つ代わりに CPU で計算しようとすることがあります。

ミスをすると、ドライバーの知性と質に応じて、常にいくつかのバリエーションがあります。

  • おそらく、ドライバーがエラーを修正し、コマンドを無視して、代わりに独自のセットを実行するでしょう。
  • おそらく、ドライバーはプログラムに何らかのエラーコードを返すでしょう
  • たぶん、ドライバーはコマンドをそのまま実行します。緑の代わりに赤の色でペイントを発行した場合 - これはエラーですが、ドライバーが知ることができない種類のものです。PCゲーム関連サイトで「3Dアーティファクト」で検索。
  • 最悪の場合、エラーがドライバーのエラーに干渉し、コンピューターがクラッシュして再起動する可能性があります。

もちろん、これらの適応戦略はすべてかなり複雑で不確定であるため、3D ドライバーは閉じられ、内部のノウハウは厳重に保護されます。

3D ゲームやおそらく 3D モデリング専用の検索サイト - ビデオカードを「購入したほうがよい」と評価する必要があり、新しいチップ ファミリをレビューするときに、これらすべての技術的な内部についてかなり詳細なエッセイを作成することがあります。

于 2012-11-19T12:08:54.367 に答える
1

質問5へ。ドライバーが行うことのいくつか:GPUプログラム(頂点、フラグメントなどのシェーダー)を特定のカードのマシン命令にコンパイルし、コンパイルされたプログラムをデバイスメモリの適切な領域にアップロードして配置します。カード上の多くのグラフィックコアで並行して実行されるプログラム。グラフィックデータ(頂点座標、テクスチャなど)を、プログラマからのさまざまなヒントを使用して、適切なタイプのグラフィックカードメモリにアップロードします。たとえば、日付が頻繁に更新されるか、まれに更新されるか、まったく更新されないかなどです。グラフィックカード内の特殊なユニットを使用して、ホストメモリとの間でデータを転送できます。たとえば、一部のnVidiaカードにはDMAユニットがあり(一部のQuadroカードには2つ以上ある場合があります)、たとえば、テクスチャを並行してアップロードできます。通常のドライバー操作(その他の転送、

于 2012-11-19T13:11:35.080 に答える