Re: GetColorBitDepth の戻り値について ( No.1 ) |
- 名前:いっち 日時:2009/11/12 14:27
私の環境でも同様でした。
SetGraphMode()かDxLib_Init()を一度実行した後だと正しい値を返してくれるようです。
テスト環境:
OS WindowsXP SP3
DirectX 9.0c
DXLib Ver3.00e
|
Re: GetColorBitDepth の戻り値について ( No.2 ) |
- 名前:いっち 日時:2009/11/12 15:03
もう少し調べてみました。
// もともとの画面色数は32bitです。
int d = 0;
d = GetColorBitDepth( ); // <- 戻り値は0
SetGraphMode( 640, 480, 16 );
d = GetColorBitDepth( ); // <- 戻り値は16
if ( DxLib_Init() == -1 )
return -1;
d = GetColorBitDepth( ); // <- 戻り値は32
となりました。
一度SetGraphtModeを16bitで初期化し、DxLib_Init()を呼んだあとで、
もう一度SetGraphModeをGetColorBitDepthを引数にして呼ぶと
うまくいくのではないでしょうか?
|
Re: GetColorBitDepth の戻り値について ( No.3 ) |
- 名前:kum0708 日時:2009/11/12 15:14
いっちさんありがとうございます。
たとえば、windowモードではじめからウィンドウを作りたい場合、
色数を調べるのにDxLib_Initを呼んだあとに
SetGraphModeで再設定しないといけないってことですかね?
それだと
homepage2.nifty.com/natupaji/DxLib/dxtec.html#M7
上記のURLで『前処理』のすすめでの書いていますけど。
あんまり、いい処理では無いとおもうんですが。
|
Re: GetColorBitDepth の戻り値について ( No.4 ) |
- 名前:いっち 日時:2009/11/12 15:56
すみません、No2の情報は間違っていました。
もともとの画面色数は32bitでWindowモードで実行した場合
以下のような結果になりました。
ChangeWindowMode( TRUE );
GetColorBitDepth( ); // <-戻り値=0
SetGraphMode( 1024, 768, 16 ); // <-戻り値=0
GetColorBitDepth( ); // <-戻り値=16
if ( DxLib_Init() == -1 )
return -1;
GetColorBitDepth( ); // <-戻り値=32
SetGraphMode( 1024, 768, 16 ); // <-戻り値=-1
GetColorBitDepth( ); // <-戻り値=32
以上の結果から。
WindowモードのときはSetGraphMode()で色数の変更はできない
GetColorBitDepth()でもともとのシステムの色数をとることは現状できない
ということだと思います。
GetColorBitDepth()の仕様については私ではなんとも言えません。
|
Re: GetColorBitDepth の戻り値について ( No.5 ) |
- 名前:管理人 日時:2009/11/14 22:37
すいません、GetColorBitDepth の仕様が Ver3.00 以前と違っていましたので、
Ver3.00 以前と同じ値を返すように修正したバージョンをアップしました
よろしければお使い下さい m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
因みに、ウインドウモードの場合は SetGraphMode の第3引数は無視され、常にデスクトップに
設定されている色数の画面モードになります( ソフトウエアレンダリングモードの場合は設定が反映されます )
|