テクスチャ君、君は・・・
どうやらTexture.FromBitmapメソッドはえらい遅いぽい。
TextureLoader.FromFileするのに比べてBitmap.FromFile後Texture.FromBitmapは10倍くらい遅い´〜`
うーん、このままだと”GDI+で作業してそれをテクスチャに”って作戦破綻しそう。
なにしろ4FPSとかしかでませんからの!
いい手はないものかなあ。
Streamまわり
StreamWriterとかでベースストリームの更新のタイミングが問題になる例なぞ。
ま、らっぱ〜被せたらずっとそれを使えって話なんでしょうねえ。
ただ、byteとstringが混在する時は統一すると型変換で遅くなりそなのがどうも´〜`
private static void DumpFat12StyleDataOneLineFromStreamToStream(StreamWriter myStreamWriter, BinaryWriter myBinaryWriter, Stream myStream, int linePosition)
{
byte[] myBufferOfLine = new byte[BytesPerLineOfOriginalData];
myStream.Position = BytesPerLineOfOriginalData * linePosition;//先頭にアドレス表示
myStreamWriter.Write(myStream.Position.ToString("X8"));
//フラッシュしないとベースストリームに反映される前に
//次の書き込みがベースストリームに書かれてしまう
myStreamWriter.Flush();
myStream.Read(myBufferOfLine, 0, BytesPerLineOfOriginalData);
for (int i = 0; i < DataPerLine; i++)
{
myBinaryWriter.Write(GetDumpedFat12(myBufferOfLine[3 * i + 0], myBufferOfLine[3 * i + 1], myBufferOfLine[3 * i + 2]));
//myStreamWriter.BaseStream.Write(GetDumpedFat12(myBufferOfLine[3 * i + 0], myBufferOfLine[3 * i + 1], myBufferOfLine[3 * i + 2]), 0, BytesOfDumpedTwoFat12);
}
myStreamWriter.Flush();
}
うーむNotify()&GetCurrentPosition()両方?
ここ(http://66.102.7.104/search?q=cache:1F737Qt61GgJ:www1.odn.ne.jp/ceb94660/memo/index.html+directsound+getcurrentposition&hl=ja&lr=lang_ja)に出てるようにNotify()&GetCurrentPosition()両方使うとウマウマなのかもしれず。ついでに無音も挿入したらええのかねえ。
GetCurrentPosition()!
動的ストリーム再生って色々大変ですの〜´〜`固定サイズバッファってのが曲者で
- 固定サイズバッファを使用するときはwavファイルから自分でwaveformatを取得しなくちゃいけない
- ループ再生になるから終了位置の確認が大変
- Notify()メソッドは自分がセットしたイベント以外にも反応する(ありえん!)
- GetCurrentPosition()メソッドは分解能がイマイチ>10ms前後分のとびとびの値が帰ってくる
- 多重再生するとポーリングが追いつかない事も´〜`>1msで監視しても駄目なケースがある
ここ(http://mowamowa.p.utmc.or.jp/~amedama/cgi-bin/wiki/wiki.cgi)でみつけたame_wlのソース(http://mowamowa.p.utmc.or.jp/~amedama/data/mowa_player/ame_wl_dev1.lzh)をぱくってポーリング版再生ライブラリつくた〜
メモがわりにSecondaryBufferを監視してバッファの更新する部分をはっとこう^〜^
以下ソースコードなり。
続きを読む