ページ 1 / 1
parallels desktop環境で色の取得ができません
Posted: 2012年11月22日(木) 01:59
by トーマス
はじめまして。こちらのサイトで勉強させていただき、2Dのゲームの制作に挑戦しています。
先日macbook airを購入したので、parallels desktopでwindows7を入れてその上でvisual C++ 2010 Express Editionを動かしています。以前使っていたwindowsPCからプロジェクトごとMBAに移し、実行したところ、色の取得のみができていないようでした(文字を表示することはできるものの黒字になります)。
原因や解決方法の有無など、ご存知の方がいらっしゃいましたら教えていただきたいです。よろしくお願いいたしますm(_ _)m
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月22日(木) 12:25
by softya(ソフト屋)
DXライブラリの件でしたら環境が特殊なので、まずDXライブラリの初期化が成功しているか確認してみましょう。
プロジェクトフォルダに実行するとLog.txtが出ていると思いますが、ここにエラーなどは記載されていませんか?
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月22日(木) 18:59
by ISLe
想像ですが、DxLib_Initを呼び出す前にGetColorを使っているのではないでしょうか。
GetColorはデバイスのピクセルフォーマットで値を返すので、DXライブラリが画面モードを認識する前では有効な値とならない場合があります。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月23日(金) 01:14
by トーマス
softya様、ISLe様
ありがとうございます。
ご指摘のあった点を確認してみました。
softya様
>プロジェクトフォルダに実行するとLog.txtが出ていると思いますが、ここにエラーなどは記載されていませんか?
以下のようなメッセージが記載されていました。
13995:Alloc memory dump
14002: Total size:0(0.000kb) Alloc num:0
14008:
カラー関係と思しきメッセージとしては、以下のようなメッセージが記載されていましたが、関係があるのでしょうか?
2013:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
2018:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
2024:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
2030:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
2035:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
2040:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
2047:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
2052:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
2058:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
2063:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
2068:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
2074:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
2081:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
2086:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
2091:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
2096:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
ISLe様
>想像ですが、DxLib_Initを呼び出す前にGetColorを使っているのではないでしょうか。
メインのコードを以下のように書いています。
コード:
#include "DxLib.h"
#include "Game.h"
#include "Keyboard.h"
int Main_InitFlag=1;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(true);
DxLib_Init(); // DXライブラリ初期化処理
Game_Init(); // ゲームの初期化処理
while(!ScreenFlip() && !(Keyboard_Get(KEY_INPUT_ESCAPE)) && !ProcessMessage() && !ClearDrawScreen() && !Keyboard_Update())
{
if(Main_InitFlag){ Game_Init(); Main_InitFlag=0; }
Game_Main(&Main_InitFlag);
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
インクルードしているヘッダファイルに対応するcppファイル内でGetColor関数を使っていますが、その点が問題なのでしょうか。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月23日(金) 01:20
by softya(ソフト屋)
他にエラーが出ていなければOKそうです。
あと、Game_Init()関数かGame_Main(()関数内でGetColor()している分にはOKです。
それと、ゲームプログラミングの館のコードをどれか試してもらって異常がないか確認してみて下さい。
2.5 文字を表示する
あたりが良いと思います。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月23日(金) 18:09
by ISLe
トーマス さんが書きました:インクルードしているヘッダファイルに対応するcppファイル内でGetColor関数を使っていますが、その点が問題なのでしょうか。
どこに書いてあるかではなく、いつ呼び出されるかが問題です。
どこに書いてあるかでいつ呼び出されるかが決まる場合もありますが。
質問者さんは、プログラミングの際、コードが実行される順番を意識しないのでしょうか。
コード:
#include "DxLib.h"
int color_white = GetColor(255,255,255); // NG
void get_color_white_dynamic()
{
int color_white = GetColor(255,255,255);
return color_white;
}
void get_color_white_static()
{
static int color_white = GetColor(255,255,255); // NG
return color_white;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
color_white = get_color_white_dynamic(); // NG
color_white = get_color_white_static(); // NG
DxLib_Init();
color_white = get_color_white_dynamic(); // OK
color_white = get_color_white_static(); // NG
// (略)
}
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月24日(土) 00:39
by トーマス
softya様
ありがとうございます。
GetColor関数の引数を(0,0,0)から(255,255,255)まで全組み合わせで試したところ、(255,255,255)で白色になる以外はすべて黒でした(T T)
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月24日(土) 00:49
by トーマス
ISLe様
コードが実行される順番については意識して書いているつもりですが、もしかして自分が思い違いをしているのではないかと思いまして...
DXライブラリの初期化の前にそれらの関数を呼び出していないか、またstatic演算子などを正しく使えているか、今一度確認してみます。
ありがとうございます。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月24日(土) 00:55
by softya(ソフト屋)
>GetColor関数の引数を(0,0,0)から(255,255,255)まで全組み合わせで試したところ、(255,255,255)で白色になる以外はすべて黒でした(T T)
ゲームプログラミングの館の「2.5 文字を表示する」をそのまま使ってマトモに色がつかない場合はDirectXが正常動作しているとは思えません。
他のゲームなどはちゃんと動くのでしょうか? DXライブラリだと四聖龍神録plusとか 他にもDirectX9対応ゲームの体験版などを試してみて下さい。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月24日(土) 17:21
by ISLe
Log.txtにはデバイス画面のピクセルフォーマットも出力されるはずですが、質問者さんが貼ったログの中にはありませんね。
質問者さんが不要と思って削ったのか、DXライブラリが画面モードを取得できずに出力されなかったのか、分かりません。
DXライブラリは16ビットカラーがデフォルトですし、Windowsを動かすのにDirectX9完全対応は必須でないので、仮想化PCソフトで対応していないことは十分ありえますね。
Re: parallels desktop環境で色の取得ができません
Posted: 2012年11月24日(土) 21:13
by みけCAT
トーマス さんが書きました:softya様
ありがとうございます。
GetColor関数の引数を(0,0,0)から(255,255,255)まで全組み合わせで試したところ、(255,255,255)で白色になる以外はすべて黒でした(T T)
オフトピック
わざわざ16777216通りも試したのですね・・・
お疲れ様です。