画像表示の高速化について質問 – プログラミング – Home

画像表示の高速化について質問
 
通知
すべてクリア

[解決済] 画像表示の高速化について質問


reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
Topic starter  

VSN2003、C++、MFC使ってます。
PBM/PGM/PPM画像のビューアを作っています。
今はとりあえずPPM(P6)のみをターゲットにしています。

画像表示はOnDraw関数で1ピクセル毎に、
 pDC->SetPixel(x, y, data[i]);
のようにやっています。
data[i]はCOLORREF構造体です。

しかし、この方法だと画像の表示が非常に遅いんです。
再描画のときも遅いし、複数起動したときなんか目も当てられない。
市販ソフトの描画とは小さい画像なら、ほとんど変わらないんですが、
1280x1024ピクセルぐらいから差が歴然となってしまって。

どうしたら早く表示できるようになるのか教えてください。
だいたいの方法さえ教えていただければ、
後はこちらで何とかしますけど、
できるだけ詳しくお願いします。


引用未解決
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

とりあえず、描く絵が毎回変わらないのであれば、
バックバッファに描いてOnDrawではそれをコピーするだけにすれば、
少なくとも再描画は速くできるはずですね。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

再描画は PAI さんの言われるように裏画面がいいと思いますが、
PPM って中身は確か RGB が並んでるだけですよね。
最初にメモリ上で BITMAP に変換してしまえば
遅い SetPixel を使わなくても他の API が使えるので
それだけでも違いそうです。


返信引用
reshia
 reshia
(@reshia)
ゲスト
結合: 20年前
投稿: 117
Topic starter  

>PPM って中身は確か RGB が並んでるだけですよね。
その通りです。

PPMのデータをBMPに変換するのが手っ取り早そうですね。
ビットマップの構造は、さっき勉強しておきましたし、
ビットマップビューアも作ってみましたし。

PPMは、24bitカラーのビットマップ、
PGMは、グレイスケールなので8bitビットマップ、
PBMは、モノクロなので、1bitビットマップ
とそれぞれ、ほぼ同じ構造(4byte境界だけ注意か)なので、
変換自体のプログラムは、それほど重くなさそうです。

それでもチラツキが目立ったら、裏画面に挑戦してみます。
(だいぶ前に一度やったんですけど、忘れてました)
PAIさん、Banさん、ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました