トピック
MK No.1-Yoshi

GSAVE、GLOADについて

この命令は、配列に画像をコピーして表示するということはわかるのですが配列に入る数値は何が入るのでしょうか?色変換フラグ違いは何を意味してるのでしょうか?
2そうだね
プレイ済み
返信[1]
親投稿
配列の中身 論理コード(32bit)のとき、RGB()で作れる、色の値が入ります。 物理コード(16bit)のとき、実際にプチコンで内部で扱われる色表現のA,R,G,B=1,5,5,5bitの値が入ります(分かりにくくてすみません)
0そうだね
プレイ済み
返信[2]
親投稿
論理・物理を決めるのが色変換フラグです
0そうだね
プレイ済み
返信[3]
親投稿
bitの少ない物理コードの方が、その分圧縮ができるので有利ですが RGB()やその逆のRGBREADを使って加工をしたいときは、論理コードが便利です。
0そうだね
プレイ済み
返信[4]
親投稿
Godot orz_127
あまさと しおんさん ちょっと違っています^^; #たまたま今、GSAVE、GLOADを使っていて調べたりしているので知っているだけですが…。 16bitの場合は、RGBA(5551)です。 32bitの場合は、ARGB(8888)でαの位置が前か後かの違いがあります。 #何故逆?解りづらい orz 元の質問に戻ると、色の値が物理的(3DSのハード仕様による)な値と論理値があります。 論理値の方は32bitでR,G,B各8bit(0~255、16進で表すと0x00~0xFF)で表されれます。 Webで色を検索するとでてくる#FF0000(この例は赤)とかいうやつです。 これにα値(透明度で良かったか?)が頭についてARGBの順で 8+8+8+8bitの32bitの値となります。 しかし実際には、16bitの色しか物理的には出せないので、内部的には16bitとなります。
3そうだね
プレイ済み
返信[5]
親投稿
あー、前にFONTDEFで気づいた、下に透明bit来る色表現だったンネ
0そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
16bitの物理値の場合はR,G,B各色5bit(0~31)となります。これにα値が1bitでRGBAの並びで5+5+5+1の16bitとなります。 色指定は論理値の32bitで指定できますが、内部的には16bitになってしまうのでRGB各色256段階で指定したものが32段階に丸められてしまうことになります。0~7は0、8~15が1になってしまう感じ^^; 多分32bitを16bitにすると8で割って余り切り捨てられると思われます(8bit色値 DIV 8=5bit色値かと)。 なので16bitの物理値でGSAVEして16bitでGLOADした場合は同じ値が返ると思われますが、32bitの論理値でGSAVEして、32bitでGLOADしても一旦丸められた値が戻される事になるので (16bit色 DIV 8) * 8 となり設定した値と同じ値が返ることは保証されていないと思われます。
2そうだね
プレイ済み
返信[7]
親投稿
MK No.1-Yoshi
あまさとさんGodotさんありがとうございました。違いがよくわかりました。
1そうだね
プレイ済み
返信[8]
親投稿
Godot orz_127
すみません↑GSAVEとGLOAD逆に書いてしまった気が^^; 画面に書き込むのがGLOADで読み出すのがGSAVEなので^^; GPSETで点を打ってGSPOITでその点の色を取得しても同様に丸められて、指定した色値と違う色が返ってと思われます。 と言うわけで色には32bitの論理色と16bitの物理色があって、上記を踏まえお好みで使い分けることになるかと。 ちなみにGLOADの透明色のコピーとは、値0(32bitで言うと0x00000000)の事になります。
1そうだね
プレイ済み