stl の罠
あ〜、やっちまった.
描画周りに PVRSDK なんかをつかって OpenGL ES2.0 のツールを作っていたんだけどさ、そしたら
デバッグ実行するとフレームレートが時間に応じて下がっていくのよ.
リリースだと問題なく安定したフレームレートが返ってくるんだけど、ちょっと気持ち悪いなってことで
延々とデバッグしていたわけですよ.
まず最初に疑ったのは、フレームレートを安定させるために利用した自作のウェイトタイマーを疑ったわけ.
ひょっとしてタイマーの精度が悪いんじゃ無いかと思って、timeGetTime やら QueryPerformanceCounter の
挙動を確認してみたわけですよ.
でも、どうにも期待している値が返ってきてしまうわけです.
でもって、フレーム処理の時間計測を行ってみると、フレーム処理が徐々に伸びていくんですよね.
う〜むってうなって、 PVRSDK の挙動を疑ってみたわけです.
でも、どうにも gl の命令は期待通りに動いているわけです.
で、結局、ぐるぐると探し回っていると、数年前に作った文字列描画の処理で std::vector を使っていて
しかもフレーム毎に異なるインスタンスが生成されるようなコードになっていましたとさ...
かなりの時間を無駄につかっちまったよ...
まぁ、悔やんでも過ぎてしまった時間が戻るわけじゃないので、仕方が無い...
デバッグ中にPVRSDK のサンプルの動作を追ってみて結構ソースがおもしろかったってのと、タイマー関連で
RDTSC(Read Time Stamp Counter)のこととかを勉強できたのがせめてもの収穫としよう.