管理人様
いつも楽しくDXライブラリを使用させていただいております。
度重なる質問投稿、お許しください。
・画像ファイルのカラービット数
・SetCreateGraphColorBitDepth関数
・SetGraphMode関数の第3引数
この3つにおいて、それぞれの関係が理解できず困っております。
お手数ですが以下ご教示くださいm(__)m
■質問@
LoadGraphで画像ロードした際の使用メモリ量について、以下の認識でよろしいでしょうか?
使用メモリ量は、SetCreateGraphColorBitDepth関数で指定した値に依存し、
ロード対象となる画像ファイルそのもののカラービット数には依存しない。
例)8bitカラーのpng画像も、32bitカラーのpng画像も、
SetCreateGraphColorBitDepth( 16 ) ;
LoadGraph( ファイルパス ) ;
とした場合、16ビットの画像データとしてメモリ(VRAM)に転送される。
よって、たとえロードする対象が8bitカラーのpng画像ファイルであっても16bitの画像データとしてメモリを消費する。
同様に、32bitカラーのpng画像ファイルであっても16bitカラーに表現を落とした状態でメモリを消費する。
■質問A
SetGraphMode関数の第3引数について、教えてください。
この値と、SetCreateGraphColorBitDepthに指定する値は関係ない(合わせなくてもよい)のでしょうか?
例えば、以下のような場合、何かまずいことがあるでしょうか?
■質問A−1
640*480 32bitに対応し、
640*480 16bitには対応しないディスプレイに対して…
// グラフィックモードの色深度を32bitにする
SetGraphMode( 640, 480, 32 ) ;
// DXライブラリ初期化
DxLib_Init() ;
// 8bitカラーの画像ファイルをロードして16bitカラーのグラフィックハンドル作成
SetCreateGraphColorBitDepth( 16 ) ;
LoadGraph( 8ビットカラーのpngファイルパス ) ;
// グラフィック描画
DrawGraph( ハンドル ) ;
とした場合、また、
■質問A−2
640*480 16bitに対応し、
640*480 32bitには対応しないディスプレイに対して…
// グラフィックモードの色深度を16bitにする
SetGraphMode( 640, 480, 16 ) ;
// DXライブラリ初期化
DxLib_Init() ;
// 32bitカラーの画像ファイルをロードして32bitカラーのグラフィックハンドル作成
SetCreateGraphColorBitDepth( 32 ) ;
LoadGraph( 32ビットカラーのpngファイルパス ) ;
// グラフィック描画
DrawGraph( ハンドル ) ;
とした場合、いずれも画像は表示されるという認識でよろしかったでしょうか。
手元に試せる環境がないため、確認ができずに困っております…m(__)m
お手数おかけしますがよろしくお願いします。
また、カラービット数について他に何か気を付けるべき点などございましたら教えていただけると幸いです。