« ピクセルを処理する関数オブジェクト | メイン | OS終了とサスペンドなどからのレジューム »

2007年08月01日

グラフィックライブラリ:: イテレーターを取らないときの問題

    

関数オブジェクトの引数をイテレーターにした時に問題が発生することは考えていたが、取らない時の問題に気付いた。
MMXなどを使うバージョンをどうするのか?と言うこと。
イテレーターならポインタを得られるので一気に2ピクセル分読んでしまえばいい。
でも、画素値を直接渡してしまう場合困る。
ただ、この場合イテレーターを進めてしまうと、複数の関数オブジェクトを呼ぶときに問題が出る。
複数の関数オブジェクトを重ねるのを止めるべきか・・・

と言うか、関数オブジェクトに渡す画素値の型を__m64などとすればいいのか。
で、型が__m64の時はMMX版など。
拡縮、回転などの場合、元ピクセルは隣り合っているとは限らないから8バイト分などをポインタで読んでしまうのは問題がある。
だからその場合一度__m64などに入れたほうが良さそうだ。
出力はスキャンラインごとに書いていくだろうから、隣り合っているのであまり気にしなくても良さそうだ。
でも、そのような作りで速度出るのかどうかが少し気になる。
やってみないとな。

後、共通のソースコードにするのにアクセサだけでは対応出来なさそうだ。
ポインタの移動を行うオブジェクトが必要かもしれない。
って、それはイテレーター・・・
関数オブジェクトには、画素値を直接渡すのはいいとして、ポインタの移動を行う部分については再考の必要がありそうだ。
やっぱりそこはイテレーターか?



投稿者 Takenori : 2007年08月01日 02:51




comments powered by Disqus
Total : Today : Yesterday : なかのひと