OSDN Ticket Archive


Ticket #22413

スペキュラを無効にして描画速度を向上する

登録: 2010-07-09 01:51 最終更新: 2010-07-11 22:16

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.0.x for Windows
マイルストーン:
Version 1.0.3 (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

スペキュラを無効にすることで、描画速度を向上する。

現状は、レンダリングステートでスペキュラを有効にしている。 またマテリアルのスペキュラにゼロ以外の値を設定している。

MSDNの「パフォーマンスの最適化 (Direct3D 9)」を参照すると、 「スペキュラ ハイライトは、ライトの 2 倍の負荷がかかります。」 とある。

しかし現状のMIDITrailは直方体しか描画しないため、スペキュラを有効にしても見た目の効果がない。 余計な負荷を掛けているだけなので、スペキュラを無効にする。

チケットの履歴

2010-07-09 01:51 更新者: yknk
  • 新しいチケット "性能改善:スペキュラを無効にする" が作成されました
2010-07-09 02:02 更新者: yknk
  • 詳細が更新されました
  • 概要が更新されました
2010-07-11 09:01 更新者: None
  • マイルストーン Version 1.0.3 (完了済み) は終了しました
2010-07-11 18:51 更新者: yknk
  • マイルストーン Version 1.0.3 (完了済み) が再オープンされました
2010-07-11 22:15 更新者: yknk
コメント

原因

DXDirLight::SetDevice()において、メソッドの引数でライトONが指定されたとき、 レンダリングステート D3DRS_SPECULARENABLE の設定をTRUEにしている。 従来のバージョンでは、常にライトONを指定している。

2010-07-11 22:16 更新者: yknk
コメント

対策

DXDirLight

SetDeviceメソッドにて、ライトON/OFFの指定に関わらず、 レンダリングステート D3DRS_SPECULARENABLE の設定を常にFALSEとする。

効果

約2万個のノートを含むMIDIデータを再生したところ、修正前後でFPSの値が30から45に変化した。

2010-07-11 22:16 更新者: yknk
  • チケット完了時刻2010-07-11 22:16 に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません