« パーティクル描画順 | メイン | α付き画像にα付き画像を重ねた時の誤差 »
2012年12月18日
日常の備忘録:: 色ビット数拡張
Tweet @jin1016をフォロー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 : 2012年12月19日 10:49
なるほど、ビット演算のほうがいいですね。
投稿者 Jin1016 : 2012年12月19日 16:26
comments powered by Disqus