vvvvでスライドショーを作った時にハマったこと
テクスチャ・メモリ管理・.dds
(そもそも正しい挙動かわからないが)
vvvvで.jpgや.pngをtextureとして読み込むと1枚あたり100MB〜200MBメモリ使用量が増える。そのため、数十枚〜数百枚の画像や動画を使って凝ったスライドショー等を作ろうとすると恐ろしいことになる。depthとmipmapの設定等で多少回避できる。
公式では.ddsを推奨している。
.ddsファイルはコンバーターで変換して作成する。dxt1〜5でスペックが異なる。恩恵を受けるにはFiletextureのinspectorでformatを"dxT(数字)"を設定する必要がある。
表示のバグ・癖(ハマった所)
表示のバグ?
Rendererでdepthbufferを設定すると一部の画像に黒い縦線が入る。
重なり順が精緻に求められる開発だとつらい。
表示されないファイル(読み込んでも表示されない)
vvvv.orgやネット上に落ちてるconverterでは太刀打ちできない謎のファイルがたまにある。元画像のサイズや解像度などに規則性がなく、再現性に乏しいので理由は不明。
→いずれもPhotoshopで変換したらちゃんと読み込めた。
ファイルサイズ
どのコンバーターも元のjpgとかpngの解像度を維持して、.ddsに変換するため、ファイルサイズ自体は大きくかわらない。事前にリサイズしてから.ddsに変換したほうがよい。
動画と静止画のまざったスライドショー
(最新のvvvvというかdx11 packを試してないからupdateされた可能性もあるが)
静止画 → player(dx11) まあ よし(EX9もある)
動画 → FileStream (DX11.Texture VLC) nextpinなし。高速に切り替えずらい
→ FileStream (EX9.Texture VLC) nextpin、preloadでスムーズ
実装上の理由で最終的にはdx11で出力したかったので、Filestream EX9で一度renderしてdx11に変換したが動画ファイルでは読み込みのタイミングでうまく渡せない事がある。
EX9 → renderer → メモリ → DX11から呼び出し
特に初回はメモリまでちゃんと渡してから呼ばないといけない。少し遅延させて読み込ませる必要がある(もしくはcreatenodeなどでノード自体を生成する)