2011年4月17日日曜日

にっき

 8bitのDIBSectionを作成して
StretchBltでウィンドウのHDCに描画しようとするとなぜか失敗する。
StretchDIBitsだとうまくいく。なぜ。
 GetLastError()そんなのもあったなあと思いつつチェックすると
ERROR_NOT_ENOUGH_MEMORY( = 8)が帰ってきてた。うーん? 
よく調べてみるともっとはるか以前に発生してるっぽい、どこだ。
おもいっきりCreateDIBSectionですっころんでるがHBITMAPはちゃんと帰ってくるんだな。
LoadImageでも同様にGetLastErrorで8が帰ってくる割に読み込みはできてる、なんなの。
 とりあえずCreateDIBSectionのほうは、HDCでレンダリングできないがピクセルデータはきっちり保持してるらしく、
そのままビットマップファイルに出力してみたら正しくファイルを吐き出せた。
正直よくわからん。
 
 256色にすれば4ピクセルずつ書き込めて高速化できるかなー、とおもったが、
uvによるピクセル取得が1ピクセルごとなので高速化できない。
4ピクセル分あつめてから吐き出すようにすれば早くなる可能性もあるがめんどくせえ。

0 件のコメント: