高レベルと低レベルのグラフィカルAPI:違いとその仕組み

グラフィックスAPIはハードウェアではなくソフトウェアですが、画面に表示されるグラフィックスのレンダリングには不可欠であり、グラフィックスAPIがないとアプリケーションと GPU 不可能だろう。 この記事では、グラフィカルAPIとは何かをアクセシブルな方法で説明し、それらに関連するいくつかの神話を打ち破ります。

GPUはプログラムを実行しませんが、命令のリストは実行することを考慮に入れる必要があります。 しかし、このリストはどこから来て、どのようにGPUに到達するのでしょうか?

高レベルと低レベルのグラフィカルAPI:違い

グラフィックAPIとは何ですか?

OpenGLマシン

グラフィックAPIは、アプリケーションがGPUと通信して、次のフレームまたはその一部を描画する方法をマークできるようにするものです。 この概念は、GPUとは何かをプログラミング言語で作成する抽象化に基づいています。抽象化の概念を理解するために、GPUの代わりにソーダマシンが接続されていると仮定します。

リフレッシュメントマシンのAPIは、コインを投げる、変更を返す、リフレッシュメントを選択する、リフレッシュメントを配信する、プログラムが相互作用できるように、APIのこの部分がフロントエンドによって呼び出されるライブラリになります。それを使って行うのは命令のリストです。GPUではこのリストはDisplayListまたはスクリーンリストと呼ばれます。

DisplayListリングバッファ

上記の画面リストは、グラフィックカードドライバーに他ならないソフトウェアによって読み取られます。これにより、リストがGPUが理解できるマイクロコードに変換され、その一部にコピーされます。 RAM GPUが常にアクセスするメモリ。 画面リストを読み取るには、リストをコマンドプロセッサの内部メモリにコピーし、画面リストの指示に従ってシーンまたはその一部のレンダリングを開始します。

このプロセスは、ゲーミングPC、スマートフォン、またはビデオゲームコンソールのいずれを使用しているかに関係なく、GPUがレンダリングして画面に送信する各フレームで継続的に実行されます。

今日のグラフィカルAPIとは何ですか?

APIグラフ

現在最も使用されているグラフィカルAPIは次のとおりです。

  • バルカン: OpenGLに代わるもので、プラットフォームに依存しないと言われているすべてのタイプのオペレーティングシステムで使用されていますが、これはGoogleのメインAPIです。
  • 金属: macOSで使用され、GPUアーキテクチャ用に特別に最適化されたAppleのグラフィックAPI。
  • DirectXの: MicrosoftのWindowsおよびXbox用APIは、プラットフォームに応じていくつかのバージョンに分割されていましたが、最近、単一のバージョンに統合されました。
  • GNM / GNMX / GNM ++: SONYのPlayStation4およびPlayStation5コンソール用のグラフィカルAPI、GNMXは高レベルAPI、GNMはPS4の低レベルバージョンAPI、PS5のGNM ++です。
  • NVN: このシリーズのコンソールでのみ使用されるNintendoSwitchグラフィックAPI。
  • OpenGLの: すべてを開始したAPIは、元々IrisGLと呼ばれ、シリコングラフィックスワークステーション用に設計されていましたが、PC、コンソール、およびその後のスマートフォン用のAPIに進化しました。 OpenGL4のブランド変更であるVulkanであるバージョン5に到達しました。

コンピューティングとグラフィックス

DX11対DX12

GPUは非常に複雑なプロセッサであり、ビデオゲームをレンダリングするための単なるおもちゃではなくなり、今日では人工知能や高性能コンピューティングなどの分野で使用されており、グラフィックスAPIの進化をもたらし、グラフィックスを超えています。

現在、アプリケーションは単一のリストではなく複数のリストを送信します。そのうちのXNUMXつはグラフィックスで、残りはコンピューティングです。GPUは、グラフィックスのレンダリングとは関係のない特定の問題を解決するために使用され、後者は完全に非同期で動作します。したがって、画面リストに依存しません。

たとえば、グラフィックデザインアプリケーションがGPUの能力を使用して写真の特殊効果を解決しているのは、GPUがその問題を解決するための設備が整っているからです。 CPU。 計算リストのおかげで、GPUの無料リソースを使用してそれらの小さな問題を解決することができます

高レベルと低レベルのグラフィカルAPI:それらはどのように異なりますか?

APIGráficasAltoBajo

低レベルのAPIについて話すとき、GPUの近くで実行されるAPIを指します。これは、ドライバーが最上部にあるときにスタックの最下部にあります。したがって、高レベルのAPIは、ディスプレイを生成するドライバーを必要とするAPIです。リスト。 特定のドライバータスクは高レベルAPIで実行されないため、理論的に達成されるのは、CPUによる画面リストの実行時間が短くなることです。つまり、フレームをより短いミリ秒で終了するか、グラフィックを改善するためにより多くの時間を与えることを意味します。その同じフレーム。

実際には、低レベルAPIにはドライバーがないため、場所によっては読み取りやリッスンが可能であるというのは誤りですが、これははるかに単純であり、アプリケーションに対して特定の重要なタスクを実行するときに作業に負担をかけます。これにより、開発者は次のことが可能になります。画面リストの作成プロセスを制御することにより、各フレームのタイミングを可能な限り最適化します。

ただし、多くの場合、開発者にとっては、追加の開発時間が経済的に価値がないという事実のため、または単にゲームをAPIに適応させることで得られるメリットのために、高レベルのAPIを使用する方がはるかに快適です。低レベルは感知できません。

コンソールとPCの神話

コンソールには独自のハードウェアがあるため、さまざまな構成が存在するPCよりもAPIがはるかに最適化されているという神話がありますが、実際にインストールしたドライバーが画面リストを生成します。 違いは、コンソールでは、このドライバーは静的であり、コンソールの商用寿命全体でパフォーマンスの更新や変更を受け取らないことです。