プログラムのメモリ上に展開した、200(ピクセル)×100(ピクセル)×24bit のビットマップデータ中に、黒以外の色があるかどうか判断する最速の手段は何でしょうか?
最速でなくともしらみつぶしに1ピクセル毎にチェックする方法よりも早い方法があれば教えてください。
外池と申します。
基本的に妙技はないかと。端からしらみつぶしにチェックする、という動作は同じになると思います。 せいぜい、1バイトごと、2バイトごと、4バイトごと、8バイトごと・・・、というようにひとまとめに「ゼロ」判定をするビットの数を大きくして効率化するぐらいしか思いつきません。
いずれにせよ、ピクセル数も少ないですし、どれだけの高速化の必要性があるのかが、よくわかりませんが。
私もひとまとめにチェックするぐらいしか高速化手段を思いつきません。
メモリ上に展開したビットマップがDIB形式なら、ピクセルデータは連続領域な ので、200 * 100 * 24bit = 60kbyteの連続データかと思います。 BYTE Data[200 * 100 * 3]; memset(Data, 0, sizeof(Data)); として、比較データを作成し、このDataと memcmp() すれば一撃かな?