- 締切済み
Wave波形の描画について
現在C,C++を用いてwave波形の描画が出来るソフトを作成してみようと思っています。 最終的には一般的な波形データ編集ソフトと同じようなものを目指しているのですが、以下の点にてどのように実装するといいのか悩んでいます。 1、波形データを描画する 2、表示した波形データを伸縮できるようにする(縦横) 3、waveデータを再生した際に、再生位置にあわせて波形データをスクロールさせる 現在waveデータからサンプルデータ値を抽出するところまでは出来ています。 単純に1つ1つのサンプルどうしを線で結ぶという処理を大量に繰り返すという方法だととても重たくなるため別の方法を探していたところ、DirectXを使ってロードの際に波形データをテクスチャに一気に描画しておいてあとはそれを表示/加工する、といった処理が出来るのかなと思っているのですが具体的な方法がわからずに困っています。 上記実装についてご助言いただけないでしょうか。上記以外の方法でも結構でございます。 DirectXについても初心者ですのでお勧めの書籍やWebサイトなど併せて紹介していただけると非常に幸いでございます。 どうぞ宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
扱うデータの長さや,表示するときの縮尺によって,色々と工夫のしがいがありそうですね。 まず,画面に収まっている範囲だけ描画するのが基本でしょう。 ただ,ズームアウトすると,描画すべき標本の数が増えてくるので,うまく間引く必要はありそうですね。 # 描画時に裏画面を使うと良いかもしれません。 長いデータになると,全てをメモリ上に持つことすら困難なので, 必要な時に必要な部分だけファイルから読み込まないといけないでしょう。 (現在位置の前後だけメモリに持っておく) 大昔にそんなプログラムを作りました。 # 44.1 kHz で 1 時間サンプリングすると,158,760,000 サンプルです。 # x 軸方向に 1 ピクセル 1 サンプルで描画するとして, # DirectX なら,そんな巨大なテクスチャが作れるのだろうか・・・
お礼
ご返答遅れてすいません。 なるほど、まずは画面内に収まっている範囲だけ表示するところからやってみようと思います。 裏画面の方法も参考になりました。 ありがとうございました!