トップページ > 記事閲覧
MV1DuplicateModelの速度について
名前:ギウ 日時: 2017/08/08 09:49

お世話になっております。 現在、速度テスト中です。 MV1DuplicateModelを使う方が速いとのことでしたので、 1000オブジェクトを生成して、実行テストしてみました。 下記のように、少しずつ位置をずらしながら描画。 ============ for(int i=0; i<1000; i++) { MATRIX mat = MGetTranslate(VGet((float)(i*5), 0.0f,(float)(i*10))); MV1SetMatrix(id[no], mat); MV1DrawModel(id[no]); } ============ すると、MV1DuplicateModelで1000体複製した方は、30ms 複製せずに、同じハンドル(id)を使った場合は、27ms でした。 上記は1種類のオブジェクトですが、6種類を交互に表示させた場合も、複製無しの方が速かったです。 これは、ビデオカードの影響でしょうか、それともMV1DuplicateModelの使い方の問題でしょうか。 高速描画の為のアドバイスお願いします。 =========== 最終的にやりたいことは合戦ゲームで、なるべく多くのキャラを出したい感じです。 (今はハイポリのみで描画テスト中)
メンテ

Page: 1 |

Re: MV1DuplicateModelの速度について ( No.1 )
名前:管理人 日時:2017/08/10 22:00

一度 MV1SetPosition と MV1SetRotation で位置と向きを設定したら その後一切状態が変化しない背景のオブジェクトなどに関して、 MV1DuplicateModel で複製したモデルハンドルを使用して一度位置と向きを 設定した後は毎フレーム MV1DrawModel を呼ぶだけにすると MV1DuplicateModel を 使用しない場合に比べて負荷が小さくなりますが、毎フレーム MV1SetMatrix や MV1SetPosition で 位置や状態が変化するオブジェクトについては MV1DuplicateModel で作成したモデルハンドルを 使用するメリットは無いかもしれません( この場合、一つのモデルハンドルを使用した方が アクセスするメモリの範囲も狭くなるので、結果として処理負荷も MV1DuplicateModel を 使用した場合より早くなるのかもしれません ) MV1SetPosition, MV1SetRotation, MV1SetMatrix, MV1SetAttachAnimTime などのモデルの 姿勢や位置が変化する関数が呼ばれるとモデルのフレーム( ボーン )の位置・向きの計算が 行われますので、不要な MV1SetPosition, MV1SetRotation, MV1SetMatrix, MV1SetAttachAnimTime などの 関数はできるだけ呼ばないようにすることでCPU負荷を軽減することができます
メンテ
Re: MV1DuplicateModelの速度について ( No.2 )
名前:ギウ(解決) 日時:2017/08/11 05:26

了解しました! ということは、 ”動かない木”などを沢山配置しておく場合は、MV1DuplicateModelを使い、 ”常に動くキャラ”の場合は、一つのモデルハンドルを使うのが良い。ということですよね。 その方向で制作します。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存