トップページ > 記事閲覧
カラービット数(色深度)について
名前:Ketty 日時: 2014/09/24 22:12

管理人様 いつも楽しく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 お手数おかけしますがよろしくお願いします。 また、カラービット数について他に何か気を付けるべき点などございましたら教えていただけると幸いです。
メンテ

Page: 1 |

Re: カラービット数(色深度)について ( No.1 )
名前:管理人 日時:2014/09/25 00:15

> 質問1 > LoadGraphで画像ロードした際の使用メモリ量について、以下の認識でよろしいでしょうか? はい、合っています 因みにアルファチャンネルつきの32bitカラーを16bitで読み込むと RGBA 各要素が 4bit しかない画像となります ( アルファチャンネルつきではない画像の場合は RGB各5bit A1bit の画像となります ) > 質問A > SetGraphMode関数の第3引数について、教えてください。 > この値と、SetCreateGraphColorBitDepthに指定する値は関係ない(合わせなくてもよい)のでしょうか? はい > 例えば、以下のような場合、何かまずいことがあるでしょうか? >  質問A−1 まずくありません 仮にディスプレイだけでなく、グラフィックスデバイスも16bitに対応していない場合は、 SetCreateGraphColorBitDepth( 16 ) を実行しても、内部で勝手に 32bit の画像として VRAM に転送されます >  質問A−2 まずくありません 仮にディスプレイだけでなく、グラフィックスデバイスも32bitに対応していない場合は、 SetCreateGraphColorBitDepth( 32 ) を実行しても、内部で勝手に 16bit の画像として VRAM に転送されます > また、カラービット数について他に何か気を付けるべき点などございましたら教えていただけると幸いです。 いえ、特に無いです 一番の落とし穴が 100KB の jpg 画像を読み込んだら、消費される VRAM容量も 100KB だと思ってしまうという例なので、 そうではないと認識されているのでしたら大丈夫です
メンテ
Re: カラービット数(色深度)について ( No.2 )
名前:Ketty(解決) 日時:2014/09/25 11:39

管理人様 お忙しい中、ご回答くださりありがとうございました。 なるほど、環境が、対象のカラービット数に対応していない場合は、内部的に対応するカラービット数に変換されるのですね。 よくわかりました。 >一番の落とし穴が 100KB の jpg 画像を読み込んだら、消費される VRAM容量も 100KB だと思ってしまうという例なので、 >そうではないと認識されているのでしたら大丈夫です はい、その件につきましては過去ログで管理人さんがVRAM容量の計算方法を掲載してくださっていたので認識できておりました。 http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=305 ありがとうございました。解決しましたm(__)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存