# NNS_G3dDraw1Mat1Shp

## 構文

      #include <nnsys/g3d/1mat1shp.h>

      void
      NNS_G3dDraw1Mat1Shp(
          const NNSG3dResMdl* pResMdl,
          u32 matID,
          u32 shpID,
          BOOL sendMat
      );

## 引数

pResMdl | モデルリソースへのポインタ
matID | 描画するマテリアルへのインデックス
shpID | 描画するシェイプへのインデックス
sendMat | マテリアル情報をジオメトリエンジンに送信するかどうか

## 返り値

なし。

## 説明

ごく単純なオブジェクトを描画するのに適した関数で、モデル内のmatIDとshpIDで指定されるマテリアルとシェイプを描画します。sendMatを`FALSE`にした場合、マテリアル情報の送信は行われません。
この関数を使用した場合、一般的なモデルの描画の前に必要なセットアップ処理やアニメーション計算に伴うデータのコピー等を行わないため、`NNS_G3dDraw`関数で同様の描画を行うよりも高速に描画することができます。ただし、以下のような制限があります。

- アニメーションリソースを再生することは不可能です。
- コールバック処理を挟むことはできません。
- マテリアルのグローバルステートとの合成は行われません。モデルのマテリアル情報がそのままジオメトリエンジンに送信されます。
- エンベロープ付のシェイプは描画不可能です。

ディスプレイリストの送信にDMA転送を使用するため、この関数を呼ぶ前に`DC_Flush*`/`DC_Store*`関数等を使用してディスプレイリストをメモリにライトバックしておく必要があります。

## 参照

NNS_G3dDraw

## 履歴

2008/01/23 DMA転送を使用する旨を追記
2004/08/31 初版