複数の描画 API
API は、ほとんどの場合は依存しない描画 API で表されます。描画 API に固有のエントリ ポイントに対するプラグインを記述している場合は、それが使用される
API を返す必要があります。supportedDrawAPIs() インタフェースは、関連するすべてのエントリ ポイントに用意されています。
従属描画 API ライブラリまたはインタフェースの設定は、プラグインで行う必要があります。サポートされる各描画 API のライブラリの特定のバージョンに、SDK が用意されています。現在の依存ライブラリは、CgFX、DirectX
11、コンパイル済みの DX11 エフェクト ランタイム ライブラリです。DirectX SDK にはソース コードが付属しているので、コンパイル済み DX11 エフェクト
ライブラリは、プラグイン作成者が再コンパイルし、独自のプラグインに明示的にリンクできます。現在のライブラリのバージョンは、出荷リソース ノートの一部として表示されます。
重要な描画 API の注意事項を次に示します。これの制限は描画 API ライブラリによるものではなく、Maya API での制限です。
- 提供されているテクスチャまたはターゲット マネージャを使用するとき、描画 API によっては使用できない形式があります。各 API に付属する外部公開されたドキュメンテーションを参照してください。
- テクスチャ マネージャからアクセスするテクスチャは、左上コーナーを原点として使用します。必要に応じて垂直反転を実行するには、シェーダを適切なテクスチャ座標で記述する必要があります。
- 立方体マップ テクスチャ面の方向は、描画 API に固有です。
- シェーダ マネージャによって提供されるストック シェーダは、シェーディング言語間の細かな違いを隠ぺいします。ストック シェーダを使用しない場合、プラグイン作成者はそのシェーディング言語に固有のコードを記述する必要があります。たとえば、Cg
と HLSL におけるベクトル/行列乗算の相違点の処理などです。
- MFragmentManager で登録されるユーザ作成のシェーダ フラグメントでは、OpenGL (Cg)と DirectX (HLSL)の両方に対する実装を定義する必要はありません。ただし、両方の実装が定義されている場合は、作成者が
2 つの間の違いを処理する必要があります(テクスチャのアクセスまたはマトリックス計算など)。場合によっては、フラグメントを使用するクラスで現在アクティブなデバイスの正しいフラグメントを選択し、完全に異なるフラグメントを作成する必要があります。
- MPxShaderNode によって指定される一部のジオメトリ要件が満たされないことがよくあります。その場合、プラグインでこの状況を処理する必要があります。特に、DirectX は OpenGL
より頂点ストリーム不一致に対する許容度がどの程度小さいかに注意してください。