« パーティクル描画順 | メイン | α付き画像にα付き画像を重ねた時の誤差 »

2012年12月18日

日常の備忘録:: 色ビット数拡張

    

RGB555 から RGB888 へ変換する時、単純にシフトでやると、最大値の 0x1F が 0xF8 と少し暗くなってしまう。
(0x1F * 0x21) >> 2 = 0xFF とやると、最大値は最大値のままに出来る。
他もそれなりの幅で拡大される。
よく忘れてしまうのでメモ。

4bit -> 8bit
0xF * 0x11 = 0xFF

5bit -> 8bit
(0x1F * 0x21) >> 2 = 0xFF

6bit -> 8bit
(0x3F * 0x41) >> 4 = 0xFF

7bit -> 8bit
(0x7F * 0x81) >> 6 = 0xFF
----------------------------------
ビット演算で出来るとコメントもらい追記。

4bit -> 8bit: (0xF << 4) | 0xF = 0xFF
5bit -> 8bit: (0x1F << 3) | (0x1F >> 2) = 0xFF
6bit -> 8bit: (0x3F << 2) | (0x3F >> 4) = 0xFF
7bit -> 8bit: (0x7F << 1) | (0x7F >> 6) = 0xFF

関係ないけどコメントの方>>がうまくエスケープされてないな……
なんだろう。



投稿者 Takenori : 2012年12月18日 23:23



コメント

乗算を開いただけだけど、こんな感じのビット演算でやってるっす。
4bit -> 8bit: (0xF 8bit: (0x1F > 2) = 0xFF
6bit -> 8bit: (0x3F > 4) = 0xFF
7bit -> 8bit: (0x7F > 6) = 0xFF

投稿者 AonekoSS [TypeKey Profile Page] : 2012年12月19日 10:49

なるほど、ビット演算のほうがいいですね。

投稿者 Jin1016 [TypeKey Profile Page] : 2012年12月19日 16:26


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