細かい事だとは思うが
15ビットカラー(RGB555)を24ビットカラー(RGB888)にするとき
よりゲーム画面に近くするには、どう変換するのがいいんだ?
各色要素を左へ3bitシフトさせているコンバータが多いが、
これだと7FFF(白)がF8F8F8になって完全な白にならないし。
例えば
(red << 3) + (red >> 2)
のように右へ2bitシフトしたのを足した方がいいのか?
左端bitが0か1かで、輝度が変わるコンバータもあったが
左端bitはRGBの変換方法に関係があるのか?(α値だと思ってたんだが)
コンバータ作者によって変換方法がバラバラなんで、どれが一番良いかわからない。
ちなみに変換したいのはセガサターンのレイアース。
>>902 ちゃんとフォーマットを調べないとなんとも言えない。
>15ビットカラー(RGB555)を24ビットカラー(RGB888)にするとき
>よりゲーム画面に近くするには、どう変換するのがいいんだ?
輝度値の伸張だけの場合、端的に言うと、浮動小数点演算が必要になる。
5bitの無符号最大値(31)と8bitの無符号最大値(255)の比を求めて、それを掛けるようにする。そして結果の整数値だけを取り出す。
ビットシフトは手抜きなんだが、一番手軽ではある。
ガンマカーブの変換はともかくとして、見栄えまでやるとなると拡縮ルーチンの問題になってくるけど、
そこまでやってるコンバータ作者はさすがにほとんどいない(というか意味が無いとさえ考えている)。
>左端bitが0か1
16bitでR5G5B5A1(PSの場合)とR5G6B5(DCの場合。Windowsの16bitBMPと同じ?)は知ってるけど、SSはよく知らない。
>レイアース
魔法騎士レイアースだっけ?CLAMP作品で、人名・地名にやたらと乗用車の商品名が多いとか、第1部終盤は巨大ロボットもどきに乗ってバトルとか。
・・・それはともかくとして、フォーマットは分かってるんでしょ。だったらあとは試行錯誤しかないと思うけど。
904 :
AZUCO:2009/01/26(月) 00:38:55 ID:Mocexscy
>>902 そのまま<<3でOK
実記のDACにも結局はその値が叩き込まれているはず。
むしろ何もしない方がいい。
>これだと7FFF(白)がF8F8F8になって完全な白にならないし。
これを重視するのであれば、0x7fffの時にエスケープを入れるか
0x0000にエスケープを入れて、|=0x03するのが良いのでは?
まぁ書き込み内容から見て、恐らく自作ゲームにデータをコンバートしたいのだと思うが
その先で使いやすいようにコンバートするのが良いかと思う