レンダラ

レンダー フレームワークの API インタフェースは、API クラス MRenderer で公開されます。

クラス自体のほとんどの部分は、レンダリング リソースにアクセスできるインタフェースおよびレンダリング ループ オーバーライドを登録するためのインタフェースです。ここからは、次のようなさまざまなリソース マネージャを使用できます。

注:状態はパイプラインの描画フェーズ内からのみアクセスできるので(描画コンテキストが使用できる場合)、状態マネージャには MRenderer からはアクセスできません。

実際の GPU デバイスおよび GPU 描画 API (DirectX11 または OpenGL)に関する情報にも、このクラスからアクセスできます。GPU デバイスは DirectX11 の場合は DX デバイスですが、OpenGL の場合は、レンダリング フレームワークによって使用されるメイン OpenGL コンテキストです。OpenGL では、このコンテキストは Maya がインタラクティブまたはバッチのどちらのモードで実行しているかによって異なります。コンテキストがインタラクティブ ビューポートへの描画に使用されるものと同じである保証はありません。

Maya の特定のインスタンスに対しては、特定の描画 API の 1 つのデバイスだけがアクティブになります。そのため、プラグインで DirectX と OpenGL の両方を同時に使用できますが、レンダリング フレームワークはどちらか一方だけのサポートを提供します。

図 37: コアは特定の描画 API を実行するために起動される GPU デバイスです。その描画 API に固有のさまざまな GPU ハンドルに、API マネージャまたはレンダラによって公開される構成を介してアクセスできます。レンダラおよびテクスチャ、シェーダ、フラグメント、ターゲット マネージャは、パイプラインでいつでもアクセスできます。オーバーライドは、パイプラインの特定の時点でのみアクティブになります。この時間内に、描画コンテキストにアクセスできます。状態マネージャの取得と解放メソッドは、パイプラインでいつでもアクセス可能ですが、状態ブロックは、MDrawContext が使用可能な場合にのみデバイスに対してアクティブにできます。

すべてのインタフェースには共通のネームスペース MHWRender があり、現在インタフェースには C++ 言語バインドのみがあります。