MetalKit: Apple のグラフィックス フレームワークの概要
MetalKit は、Metal を簡単に理解できるようにする高レベルのフレームワークです。 Apple の 3D フレームワークの使用を開始する方法は次のとおりです。
Metal は、Apple デバイス上で 3D オブジェクトをレンダリングするための Apple の 3D グラフィックスおよびゲーム パイプラインです。 OpenGL やその他の 3D フレームワークを置き換えるように設計された Metal には、最大のパフォーマンスを達成するために Apple ハードウェアに最適化されているという利点があります。
Apple は、他の 3D フレームワークでは不可能なパフォーマンス レベルで、Apple デバイス上で非常に滑らかな 3D レンダリングを提供します。
Apple の Arcade ゲーム アプリを購読して実行している場合は、iOS または macOS デバイスでの Metal レンダリングの例を見たことがあるでしょう。 Arcade の簡単な紹介アニメーションは Metal でレンダリングされます。
2015 年の WWDC で、Apple は MetalKit と呼ばれる Metal 用の別の高レベル フレームワークを導入しました。 このフレームワークは、3D アプリ開発を簡素化するいくつかの高レベルの機能を提供することで、Metal の使用を容易にします。
具体的には、MetalKit は次の領域で追加の Metal API を提供します。
MetalKit を使用すると、MTKTextureLoader クラスを使用してアセットとテクスチャの読み込みが簡単になります。 このクラスは、アセットとテクスチャをロードしたり、テクスチャ オプションを設定したりする簡単な方法を提供します。
これらのオプションには、ミップマップの使用と読み込み、キャッシュとストレージ モード、テクスチャ座標変換、キューブ テクスチャの使用、および RGB カラー オプションが含まれます。
ミップマップ (または MIP マップ) は単なる多層イメージであり、各層は前の層よりも徐々に解像度が低くなります。 ミップマップは、イメージのレンダリングを高速化し、モアレ パターンなどのエイリアシング アーティファクトを除去するために使用されます。
モアレ パターンは、気が散るバンディングまたはカラー アーティファクト パターンであり、線または交互のピクセル グリッドなどの規則的なピクセル パターンで構成されるコンピューター グラフィックスに時々表示されます。
MTKTextureLoader の完全なドキュメントは、Apple の開発者 Web サイトの Metal フレームワーク ドキュメント (Documentation/MetalKit/MTKTextureLoader) で入手できます。
Model I/O は、3D および 2D アセットを管理するための Apple の開発者フレームワークです。 MetalKit のモデル I/O 統合には、テクスチャを Metal バッファにすばやくロードし、コンテナを使用してメッシュ データを使用するための API が含まれています。
現在、MetalKit には約 6 個のモデル I/O 関連のクラスがあり、ほとんどがメッシュを処理します。 (クラスとオブジェクト指向プログラミングについてはすぐに説明します)。
ほとんどの iOS および macOS アプリは、画面上に視覚的な情報と UI 要素を表示する標準クラスであるビューを使用します。 ビューのサブクラスが異なれば、異なるタイプのビューが提供されます。
たとえば、iOS では UIView はビューの基本クラスですが、UIButton は UIView から派生したボタン ビュー クラスです。 iOS または macOS でオブジェクト指向ビュー クラスを使用すると、Apple クラスによってすでに定義されている標準機能に依存する追加機能を構築できます。
これはオブジェクトの継承として知られています。 アプリ内のオブジェクトは、コードと、コードが動作するデータの両方をカプセル化するコードのバンドルと考えてください。 両方をオブジェクトにバンドルすることで、コードを簡単に再利用したり、追加のオブジェクトで再利用したりできます。
特に MetalKit では、開発者がアプリ内で本格的な Metal ビューを作成できるようにする新しいクラス MTKView が提供されています。 専用の Metal ビュー クラスを持つことにより、追加のコードを必要とせずに、Metal によってビューを最適に描画および管理できます。
MTKView に関する Apple のドキュメントは、開発者 Web サイトの Documentation/MetalKit/MTKView にあります。 また、MTKView では、最初にそのプロパティの 1 つで MTLDevice を設定し、どのデバイスと画面に Metal オブジェクトをレンダリングするかを指示する必要があります。
MTKView は、テクスチャをレンダリングできる MTLRenderPassDescriptor も提供します。 Apple の開発者サイトの「Documentation/Metal/Render Passes」セクションを確認してください。
オブジェクト指向プログラミング (OOP) では、オブジェクトはクラスによって定義されます。 クラスは、オブジェクトに含まれる内容を定義するソース コード ファイル内の定義であり、Swift ではオブジェクトの実際の実装です。
クラスは、他のオブジェクトから送信されたメッセージを受信して何らかの機能を実行できるメソッド (関数) を定義します。 各メソッドには、何らかの作業を実行するためのコードが含まれています。