三角端。

Δ-sphere管理人三角区也による絵日記/ゲーム開発日記。コメントは右側のweb拍手からどぞー。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

signedの罠

例大祭お疲れ様でした。1週間前の話ですが。

新しい出会いとかもありましてたくさんやる気をいただいた気がします。




画像データを独自フォーマットで出力するツールを作っています。
pngをそのまま読み込ませたほうが圧縮効率とかがいいとか思わなくも無いですが・・・

途中なぜか正しく値が取れなくなってしまいました。
char型の変数をint型の変数に代入したら値がおかしくなってしまって・・・

ビットマップの解析部分をこんな感じにしてたんですね

color = 0xFF000000;
color |= src[pixel_ofs + 0];
color |= src[pixel_ofs + 1] << 8;
color |= src[pixel_ofs + 2] << 16;

どれかの値が0xFFのときになぜか最終出力colorが0xFFFFFFFFになるという・・・
デバッガでメモリの内容を見ても正しいのになぜなんだ!

原因はsrc型がsigned char*でcolorがsigned intだったからでした。
signed charでの0xFFをsigned int型に代入すると
0xFF=-1と解釈されるので、
intに-1を代入すると0xFFFFFFFFとなってしまうというのが理由でした。

やっぱり色計算とかはunsignedでしないとだめね・・・

ちなみに・・・
unsignedだと0xFF=255なので、
intは255となり0x000000FFとして正しく値が送られます。

なんという凡ミス・・・
スポンサーサイト

たまこ

PCが死んだかとひやひやしました。

ディスプレイドライバが応答しなくなりました的なメッセージが出て画面がブラックアウト。
すぐにブラックアウトから戻るも、ちょっとマウスを動かすと同じ症状が。

調べてみるとWindowsUpdateのドライバとすでにインストールされているドライバが競合を起こしているらしいとのこと。
最新版のドライバを入れた見るも改善せず。
接触不良かと思い、グラボをさしなおすも改善せず。
Windowsフォルダ内の管理者権限を奪って、うんたらかんたら・・・とか書いてあって試してみたけど改善せず。
これからの動作が不安定になってたらどうしようと思いつつ・・・

ドライバをクリーンインストールしたら直りました。

なぜ最初からやらなかったんだ・・・


◆落書き
たまこラブストーリー観てきました。

scri_368.jpg

たまこかわいいよたまこ

うさぎやまのあのゆるい感じが結構好みです。

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。