トップページ > 記事閲覧
フレームレートが固定される
名前:BayLeaf 日時: 2018/05/15 23:33

いつもお世話になっております。 前回フレームレートについて質問をさせていただきましたが、 フレームレート全般に関してはサンプルプログラムを参考にして無事に解決しました。 ただ、フレームレートを 120前後にして実行しているのですが、 GetFFTVibrationSoftSound(周波数分布)を使用している部分だけ 60フレームになってしまいます。 この処理をコメントアウトしたら 120フレームに戻りましたので 恐らくこの部分が原因かなと思います。 ご確認よろしくお願いします。
メンテ

Page: 1 |

Re: フレームレートが固定される ( No.1 )
名前:管理人 日時:2018/05/16 00:54

GetFFTVibrationSoftSound は非常に処理負荷が高い関数なので、 単純に処理が 120FPS のフレームレートに間に合わなくなり 60FPSに なってしまっているのだと思います GetFFTVibrationSoftSound の引数 SampleNum の値が大きければ大きいほど 処理負荷が高くなりますので、SampleNum に 256 を指定するなどして なるべく処理負荷を小さくするようにすると 120FPS を保てるかもしれません ( それでも重い処理であることには変わりないので、やはり 60FPS になってしまうかもしれませんが・・・ )
メンテ
Re: フレームレートが固定される ( No.2 )
名前:BayLeaf 日時:2018/05/16 05:11

確かに SampleNum の値を変えたところフレームレートが多少改善しました。 しかし、目標には及ばずといった感じです。 ちなみにですが、SampleNum の値の範囲を増やしていただくことは可能でしょうか? 制作しているものはフレームレートが重要ですので、 処理負荷を小さくできるように 16 や 32 などの小さな値も扱えたらと思っています。
メンテ
Re: フレームレートが固定される ( No.3 )
名前:管理人 日時:2018/05/18 00:25

> ちなみにですが、SampleNum の値の範囲を増やしていただくことは可能でしょうか? 実装したのが結構前なので確認が必要ですが、恐らく可能だと思います 週末に実装しようと思いますので少々お待ちください m(_ _)m ( SampleNum の値が小さくなればなるほど精度が下がるので、実用に耐えるかはわかりませんが・・・ )
メンテ
Re: フレームレートが固定される ( No.4 )
名前:BayLeaf 日時:2018/05/18 23:44

お待ちしています。 > ( SampleNum の値が小さくなればなるほど精度が下がるので、実用に耐えるかはわかりませんが・・・ ) 個人的に精度はそこまでなくても問題ない処理ですので大丈夫です。 処理が軽くなってくれていればそれで構いません。 FFT でソフトサウンドを使用しないようにできればいいなと思っていますが、これは無理ですよね。 時々、普通のサウンドハンドルでできたらと思うことがあります。 納得したいので、ここでのソフトサウンドの役割を教えて頂ければと思います。
メンテ
Re: フレームレートが固定される ( No.5 )
名前:管理人 日時:2018/05/20 20:09

お待たせしました、SampleNum に 16, 32, 64, 128 も指定できるようにしました よろしければダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) > FFT でソフトサウンドを使用しないようにできればいいなと思っていますが、これは無理ですよね。 はい > 時々、普通のサウンドハンドルでできたらと思うことがあります。 > 納得したいので、ここでのソフトサウンドの役割を教えて頂ければと思います。 GetFFTVibrationSoftSound で行っているフーリエ変換処理は DirectSound や XAudio などの OS の 機能を使用しているわけではなく、C++ で書いた通常の処理でシステムメモリに格納されている サウンドデータにアクセスする形で実現しています( DxSound.cpp の 14272行〜14554行 に処理が 書かれています ) ソフトサウンドは C++ のポインタを使って普通にアクセスすることができるシステムメモリ上に サウンドデータがあるのでこの処理を行うことができますが、通常のサウンドハンドルは DirectSound や XAudio が処理するためのメモリ領域にサウンドデータを転送してしまい、C++ のプログラムから アクセスできる形でのサウンドデータが無い状態なので GetFFTVibrationSoftSound の処理を行うことが できないというわけです
メンテ
Re: フレームレートが固定される ( No.6 )
名前:BayLeaf 日時:2018/05/21 23:07

ありがとうございます。 SampleNum を変更できることを確認できました。 > GetFFTVibrationSoftSound で行っているフーリエ変換処理は DirectSound や XAudio などの OS の > 機能を使用しているわけではなく、C++ で書いた通常の処理でシステムメモリに格納されている > サウンドデータにアクセスする形で実現しています( DxSound.cpp の 14272行〜14554行 に処理が > 書かれています ) なるほど、OS かシステムメモリという違いがあるのですね。 > ソフトサウンドは C++ のポインタを使って普通にアクセスすることができるシステムメモリ上に > サウンドデータがあるのでこの処理を行うことができますが、通常のサウンドハンドルは DirectSound や > XAudio が処理するためのメモリ領域にサウンドデータを転送してしまい、C++ のプログラムから > アクセスできる形でのサウンドデータが無い状態なので GetFFTVibrationSoftSound の処理を行うことが > できないというわけです 解説ありがとうございます。 ソフトサウンドのみでは DirectSound や XAudio などを使用した機能が 使用できなくなるということでよろしいのでしょうか? 通常のサウンドハンドルは「再生全般」、ソフトサウンドは「周波数解析・書き込み」の認識で使っています。 もし上記であれば、ソフトサウンドに DirectSound などの OS 機能を使えるように 分岐ができたらハンドルがひとつで済むのですが、こうしたことはできるのでしょうか? ハンドルをソフトサウンド用と通常のサウンドハンドル用で2つ使用している都合上 メモリが圧迫されてしまうのでどう運用しようか考えています。
メンテ
Re: フレームレートが固定される ( No.7 )
名前:管理人 日時:2018/05/23 01:21

> ソフトサウンドのみでは DirectSound や XAudio などを使用した機能が > 使用できなくなるということでよろしいのでしょうか? はい > 通常のサウンドハンドルは「再生全般」、ソフトサウンドは「周波数解析・書き込み」の認識で使っています。 はい、概ねそのような認識で問題ないと思います > もし上記であれば、ソフトサウンドに DirectSound などの OS 機能を使えるように > 分岐ができたらハンドルがひとつで済むのですが、こうしたことはできるのでしょうか? > ハンドルをソフトサウンド用と通常のサウンドハンドル用で2つ使用している都合上 > メモリが圧迫されてしまうのでどう運用しようか考えています。 ソフトサウンドと通常のサウンドハンドルのどちらの機能も使えるようにすると、結局消費するメモリ容量は ソフトサウンドと通常のサウンドハンドルのどちらも使用する場合と同じになるので、意味がありません・・・
メンテ
Re: フレームレートが固定される ( No.8 )
名前:BayLeaf(解決) 日時:2018/05/23 05:44

> ソフトサウンドと通常のサウンドハンドルのどちらの機能も使えるようにすると、結局消費するメモリ容量は > ソフトサウンドと通常のサウンドハンドルのどちらも使用する場合と同じになるので、意味がありません・・・ すみません、この場合「メモリが圧迫する」ではなく「変数が倍増する」と書いたほうが良かったです。 考えてみたら確かにメモリ自体はほとんど意味がないですね。 取り敢えず題名の内容及びソフトサウンドの役割については解決・納得しましたので、解決済みにします。
メンテ

Page: 1 |

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

   クッキー保存