DXライブラリについて質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
L'z

DXライブラリについて質問です。

#1

投稿記事 by L'z » 14年前

(1)
キーボードの配置を変更するソフトがあります。その中でも常駐せずDirectXやコマンドプロンプトでも変更が有効であるKeySwapというソフトでキー配置を変更してもDXライブラリを使い作ったソフトでは変更が反映されません。

プログラム用のPCなのでCAPSLOCKとCTRLを入れ替えてあります。作ったものの動作確認をしているときコントロールキーが全く反応せずもともとのコントロールキーを押してみたら反応しました。
また、元々のコントロールキーを離してもずっと押したままになっています。KeySwapの変更をもとに戻すとそのようなことはないのでキーボードの故障はないと思います。
押しているかの確認プログラムはゲームプログラミングの館のものです。

一応簡単な例を載せます。ちょっとした例なので裏画面とかしてないですがそのあたりは気にしないでください。
左側のシフトキーとコントロールキーの押している長さを測るものです。
KeySwapをしていても元々のコントロールキーを押さないと反応はなく、一度押すとずっと増え続けます。シフトキーのほうは離すと0に戻ります。

コード:

#include "DxLib.h"

int Key[256]; // キーが押されているフレーム数を格納する

// キーの入力状態を更新する
int gpUpdateKey(){
        char tmpKey[256]; // 現在のキーの入力状態を格納する
        GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
        for( int i=0; i<256; i++ ){ 
                if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
                        Key[i]++;     // 加算
                } else {              // 押されていなければ
                        Key[i] = 0;   // 0にする
                }
        }
        return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						LPSTR lpCmdLine, int nCmdShow )
{


	ChangeWindowMode(TRUE);
	DxLib_Init();

	while(1){
		if(ProcessMessage() == -1) break;
		gpUpdateKey();
		ClearDrawScreen();
		DrawFormatString(0,0,GetColor(255,255,255),"%d",Key[KEY_INPUT_LSHIFT]);
		DrawFormatString(0,100,GetColor(255,255,255),"%d",Key[KEY_INPUT_LCONTROL]);
	}

	DxLib_End();

	return 0;
}
このおかしいのはKeySwapとDXライブラリどちらの問題なのでしょう?
DXライブラリを使うときにキー変更を有効にするなどの関数があったりするのでしょうか?

PCはXP Pro
実行はVC++2010Expressから
DXライブラリバージョンは3.06eです。



(2)
実行中別のウィンドウがアクティブ化して、DXライブラリで作ったウィンドウが非アクティブ化したとき画面が背景の色だけになってしまいDrawGraphしたものが全く表示されなくなります。
SetAlwaysRunFlagをONにするとブラウザで文字を打った時などのキー入力で動作してしまうことになるのでOFFにしておきたいです。
ウィンドウに表示されるものを非アクティブになった状態で維持するのはどうすればいいのでしょうか?

SetAlwaysRunFlagをONにしてアクティブかどうかをチェックして非アクティブならポーズ状態としてキー入力をすべて無視というのでできそうな気はするのですが、大抵のソフトが非アクティブでも表示されているのでわざわざ非アクティブならキーを無視なんていうものを作らなくても簡単にできるような気がするのですが良い方法はないでしょうか?


よろしくおねがいします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#2

投稿記事 by softya(ソフト屋) » 14年前

こちらかで聞くより本家DXライブラリの作者さんとKeySwapの作者さんに聞いたほうが良い問題点だと思います。
質問する場合は、それぞれテストプログラムを用意して質問してもらうと良いと思いますね。
あとDXライブラリはよくバグが出るので、一度最新版にして試験してみたほうが良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#3

投稿記事 by softya(ソフト屋) » 14年前

書き忘れましたが、フォーラムルールにあります通り別掲示板で質問するときは相互リンクをお願いします。
両掲示板の利用者が相互に掲示板を参照できるために必要です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

L'z

Re: DXライブラリについて質問です。

#4

投稿記事 by L'z » 14年前

回答ありがとうございます。

DirectXを使ったソフトをこのPCで使ったことがあると思うのですが
コントロールキーが反応しないというのを感じたことがないので
DXライブラリのほうが原因かと思い、DXライブラリの公式サイトの掲示板に質問しました。

バージョンは最新や少し古いのなど試してみましたが変わらずでした。

(2)もDXライブラリの公式サイトで質問すべきですか?


DXライブラリ掲示板での質問

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#5

投稿記事 by softya(ソフト屋) » 14年前

L'z さんが書きました:(2)もDXライブラリの公式サイトで質問すべきですか?
まず短い再現コードを、こちらで載せてみて下さい。
それで私の方でも再現性をテストしてみます。
コードに問題がなくて環境依存性が無く普遍性のある問題か分かると思います。

普遍性のある問題ならDXライブラリの作者さんにしか直せません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

L'z

Re: DXライブラリについて質問です。

#6

投稿記事 by L'z » 14年前

簡単なコードです
表示するのは画像でなくても四角形や文字でも起こります。

コード:

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						LPSTR lpCmdLine, int nCmdShow )
{
	ChangeWindowMode( TRUE );
	SetBackgroundColor(25,25,25);
	if( DxLib_Init() ) return 0;
	SetAlwaysRunFlag( FALSE );
	SetDrawScreen( DX_SCREEN_BACK );

	while(!ScreenFlip() && !ClearDrawScreen() && !ProcessMessage())
	{

			DrawBox(0,100,800,200,GetColor(100,200,50),TRUE);
			DrawBox(0,300,800,450,GetColor(200,20,250),TRUE);
			DrawString(0,440,"abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ",GetColor(255,255,255));

	}

	DxLib_End();

	return 0;
}

↓のように別のウィンドウをアクティブにすると表示がなくなります

コード:

              ┌──────────┐
              │Explorer          ×│
              ├──────────┤
┌──────┴───┐            │
│DxLib             ×│            │
├──────────┤            │
│                    │            │
│   あいうえお       │            │
│                    ├──────┘
│                    │              
│                    │              
└──────────┘              

              ┌──────────┐
              │Explorer          ×│
              ├──────────┤
┌──────┤                    │
│DxLib       │                    │
├──────┤                    │
│            │                    │
│            │                    │
│            └───┬──────┘
│                    │              
│                    │              
└──────────┘


L'z

Re: DXライブラリについて質問です。

#7

投稿記事 by L'z » 14年前

(1)のところに書きましたが試したのはXPです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#8

投稿記事 by softya(ソフト屋) » 14年前

残念ながら私の所では再現しませんね。
環境は
Windows7 64bit
DXライブラリ Ver3.06c
VisualC++2008
です。

Log.txtに何らかのエラーは出ていませんか?
私のところのLog.txtです。
0:システムの情報を出力します
4: DXライブラリ Ver3.06c
7: 論理プロセッサの数 : 4
11: OS Windows7 ( Build 7601 Service Pack 1 )
118: CPU動作速度:大体2.81GHz
120: MMX命令を使用します
122: SSE命令が使用可能です
125: SSE2命令が使用可能です
127: CPUベンダ:AuthenticAMD
138: CPU名:AMD Athlon(tm) II X4 630 Processor
148:COMの初期化... 成功しました
165:メモリ総量:12287.24MB 空きメモリ領域:8456.52MB
168:タイマーの精度を検査します
170:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
172: パフォーマンスカウンターを使用します タイマー精度 : 2728.388000 KHz
176: ソフトの二重起動検査... 二重起動はされていませんでした
181:ウインドウクラスを登録します... 登録に成功しました
185:ウインドウモード起動用のウインドウを作成します
283:ウインドウの作成に成功しました
364:IMEを無効にしました
385:ウインドウスタイルをウインドウモード用に変更します... 完了
394:DirectInput関係初期化処理
397: DirectInput7 の取得中... 成功
519: 引き続き初期化処理... 初期化成功
526: ジョイパッドの初期化...
547: ジョイパッドの初期化は正常に終了しました
549: マウスデバイスの初期化... 初期化成功
554: キーボードデバイスの初期化... 初期化成功
562:DirectInput 関連の初期化は正常に終了しました
572:DirectSound の初期化を行います
574:DirectSound インターフェースの取得を行います.... 成功
597:引き続きインターフェースの初期化処理... 成功
794: DirectSound デバイスを列挙します
798: モジュール名: ドライバ記述:プライマリ サウンド ドライバー
801: モジュール名:{0.0.0.00000000}.{97f27b96-3e24-42e5-973c-8ac1b7006fbd} ドライバ記述:スピーカー (Realtek High Definition Audio)
803: モジュール名:{0.0.0.00000000}.{70a42b9f-1b3c-4cfb-990a-afe0b4f90e48} ドライバ記述:Realtek Digital Output (Realtek High Definition Audio)
806: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
810: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB

814: 利用可能サンプリング精度
818: プライマリ 16bit = OK 8bit = OK
822: セカンダリ 16bit = OK 8bit = OK

826: 利用可能チャンネル
829: プライマリ MONO = OK STEREO = OK
836: セカンダリ MONO = OK STEREO = OK

844:DirectSound の初期化は正常に終了しました
887:DirectDraw オブジェクトの取得を行います.... 成功
917:引き続き初期化処理... 初期化に成功しました
959:IDirect3D9Ex オブジェクトを取得します.... 成功
966:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
1288:成功
1291:Driver:nvd3dum.dll Description:NVIDIA GeForce GTS 250
1296:画面のフォーマットは D3DFMT_X8R8G8B8 です
1300:Zバッファのフォーマットは D3DFMT_D16 です
1303:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1307:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1310:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
1313:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1316:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
1318:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1321:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
1325:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
1327:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
1329:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
1332:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
1334:描画用 16bit カラーフォーマットは D_D3DFMT_R5G5B5 です
1336:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1340:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1342:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
1345:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
1348:最大テクスチャサイズ 幅:8192 高さ:8192
1350:テクスチャステージテンポラリレジスタ:使用可
1353:減算合成のハードウェア対応:ネイティブ
1355:頂点シェーダーバージョンコード:300
1357:ピクセルシェーダーバージョンコード:300
1372:バックバッファロック転送の時間:666nsec 一時的な描画可能バッファを使用した転送の時間:885nsec
1374:バックバッファロックを使用します
1376:Zバッファを作成します.... 成功
1390:プログラマブルシェーダーを使用します

1497:フォントの初期化を行います
1502:フォントの初期化は正常に終了しました
1504:文字コードバッファの初期化を行います... 完了しました
6837:ウインドウを閉じようとしています
6868:ウインドウが破棄されようとしています
6880:ソフトを終了する準備が整いました
6946:フォントの初期化を行います
6959:フォントの初期化は正常に終了しました
6977:Direct3DDevice9 の解放 3
7162:Direct3D9 DLL の解放 4
7178:DirectInput 関連の終了処理... 完了
7247:DirectSound の終了処理は正常に終了しました
7250:
7252:Alloc memory dump
7254: Total size:0(0.000kb) Alloc num:0
7256:
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

L'z

Re: DXライブラリについて質問です。

#9

投稿記事 by L'z » 14年前

7では起きないのかと思い7を使って試してみました。

すると7では起きませんでした。
どちらも同じexeファイルを使用しています。

logはたぶんエラーはないと思います。
一応載せておきます。
XP

コード:

0:システムの情報を出力します
0:	DXライブラリ Ver3.07d
0:	論理プロセッサの数 : 2
0:	OS  WindowsXP ( Build 2600 Service Pack 3 )
100:	CPU動作速度:大体0.93GHz
101:	MMX命令を使用します
102:	SSE命令が使用可能です
103:	SSE2命令が使用可能です
104:	CPUベンダ:GenuineIntel
106:	CPU名:Intel(R) Core(TM)2 Duo CPU     U9300  @ 1.20GHz
108:COMの初期化... 成功しました
111:メモリ総量:2937.11MB  空きメモリ領域:1516.57MB 
114:タイマーの精度を検査します
115:精度結果 更新回数 マルチメディアタイマー:0  パフォーマンスカウンター:60
115: パフォーマンスカウンターを使用します タイマー精度 : 3579.545000 KHz 
116: ソフトの二重起動検査... 二重起動はされていませんでした
118:ウインドウクラスを登録します... 登録に成功しました
120:ウインドウモード起動用のウインドウを作成します
130:ウインドウの作成に成功しました
153:IMEを無効にしました
158:ウインドウスタイルをウインドウモード用に変更します... 完了
162:DirectInput関係初期化処理
162:	DirectInput7 の取得中... 成功
207:		引き続き初期化処理... 初期化成功
211:	ジョイパッドの初期化... 
212:	ジョイパッドの初期化は正常に終了しました
213:	マウスデバイスの初期化... 初期化成功
214:	キーボードデバイスの初期化... 初期化成功
217:DirectInput 関連の初期化は正常に終了しました
220:DirectSound の初期化を行います
221:DirectSound インターフェースの取得を行います....  成功
253:引き続きインターフェースの初期化処理...  成功
501:	DirectSound デバイスを列挙します
503:		モジュール名:                 ドライバ記述:プライマリ サウンド ドライバ 
504:		モジュール名:   RtkHDAud.sys  ドライバ記述:Realtek HD Audio output 
505:	最大サンプリングレート:192.00KHz 最小サンプリングレート:8.00KHz 
506:	総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 

506:	利用可能サンプリング精度
507:	 プライマリ 16bit = OK  8bit = OK 
507:	 セカンダリ 16bit = OK  8bit = OK 

508:	利用可能チャンネル
509:	 プライマリ MONO = OK  STEREO = OK 
509:	 セカンダリ MONO = OK  STEREO = OK 

510:DirectSound の初期化は正常に終了しました
561:DirectDraw オブジェクトの取得を行います....  成功
598:引き続き初期化処理... 初期化に成功しました
602:IDirect3D9Ex オブジェクトを取得します.... IDirect3D9 オブジェクトを取得します.... 成功
646:IDirect3DDevice9 オブジェクトを取得します.... ハードウエア頂点演算を使用します
942:成功
1015:Driver:igxprd32.dll  Description:Mobile Intel(R) 4 Series Express Chipset Family
1016:画面のフォーマットは D3DFMT_X8R8G8B8 です
1017:Zバッファのフォーマットは D3DFMT_D16 です
1018:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1018:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1019:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
1020:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1020:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
1021:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1022:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
1022:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
1023:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
1023:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
1024:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
1025:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1025:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1026:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1026:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
1026:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
1027:描画用1チャンネル整数16ビット型カラーフォーマットは D_D3DFMT_G16R16 です
1027:描画用1チャンネル不動少数点16ビット型カラーフォーマットは D_D3DFMT_R16F です
1028:描画用1チャンネル不動少数点32ビット型カラーフォーマットは D_D3DFMT_R32F です
1029:最大テクスチャサイズ 幅:4096 高さ:4096
1029:テクスチャステージテンポラリレジスタ:使用可
1030:減算合成のハードウェア対応:ネイティブ
1031:頂点シェーダーバージョンコード:300
1031:ピクセルシェーダーバージョンコード:300
1062:バックバッファロック転送の時間:3973nsec  一時的な描画可能バッファを使用した転送の時間:1915nsec
1066:バックバッファロックを使用しません
1066:Zバッファを作成します.... 成功
1093:プログラマブルシェーダーを使用します

1380:フォントの初期化を行います
1384:フォントの初期化は正常に終了しました
1413:文字コードバッファの初期化を行います... 完了しました
26621:ウインドウを閉じようとしています
26639:ウインドウが破棄されようとしています
26641:ソフトを終了する準備が整いました
26651:フォントの初期化を行います
26651:フォントの初期化は正常に終了しました
26655:Direct3DDevice9 の解放 3
26676:Direct3D9 DLL の解放 4
26680:DirectInput 関連の終了処理... 完了
26712:DirectSound の終了処理は正常に終了しました
26788:
26790:Alloc memory dump
26791:	Total size:0(0.000kb)  Alloc num:0
26792:
7

コード:

0:システムの情報を出力します
0:	DXライブラリ Ver3.07d
0:	論理プロセッサの数 : 8
0:	OS  Windows7 ( Build 7601 Service Pack 1 )
100:	CPU動作速度:大体2.44GHz
100:	MMX命令を使用します
100:	SSE命令が使用可能です
100:	SSE2命令が使用可能です
101:	CPUベンダ:GenuineIntel
101:	CPU名:      Intel(R) Core(TM) i7-2860QM CPU @ 2.50GHz
102:COMの初期化... 成功しました
103:メモリ総量:8099.42MB  空きメモリ領域:6118.32MB 
104:タイマーの精度を検査します
104:精度結果 更新回数 マルチメディアタイマー:0  パフォーマンスカウンター:60
104: パフォーマンスカウンターを使用します タイマー精度 : 2435.898000 KHz 
104: ソフトの二重起動検査... 二重起動はされていませんでした
105:ウインドウクラスを登録します... 登録に成功しました
105:ウインドウモード起動用のウインドウを作成します
117:ウインドウの作成に成功しました
128:IMEを無効にしました
129:ウインドウスタイルをウインドウモード用に変更します... 完了
131:DirectInput関係初期化処理
131:	DirectInput7 の取得中... 成功
161:		引き続き初期化処理... 初期化成功
162:	ジョイパッドの初期化... 
162:	ジョイパッドの初期化は正常に終了しました
162:	マウスデバイスの初期化... 初期化成功
177:	キーボードデバイスの初期化... 初期化成功
180:DirectInput 関連の初期化は正常に終了しました
182:DirectSound の初期化を行います
182:DirectSound インターフェースの取得を行います....  成功
202:引き続きインターフェースの初期化処理...  成功
384:	DirectSound デバイスを列挙します
414:		モジュール名:                 ドライバ記述:プライマリ サウンド ドライバー 
414:		モジュール名:{0.0.0.00000000}.{aa7b9059-a9d4-401e-9e61-ae6568b15bc4}  ドライバ記述:スピーカー (Realtek High Definition Audio) 
415:	最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 
415:	総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 

416:	利用可能サンプリング精度
417:	 プライマリ 16bit = OK  8bit = OK 
418:	 セカンダリ 16bit = OK  8bit = OK 

418:	利用可能チャンネル
419:	 プライマリ MONO = OK  STEREO = OK 
420:	 セカンダリ MONO = OK  STEREO = OK 

421:DirectSound の初期化は正常に終了しました
484:DirectDraw オブジェクトの取得を行います....  成功
516:引き続き初期化処理... 初期化に成功しました
723:IDirect3D9Ex オブジェクトを取得します.... 成功
748:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
1090:成功
1090:Driver:igdumdx32.dll  Description:Intel(R) HD Graphics Family
1091:画面のフォーマットは D3DFMT_X8R8G8B8 です
1092:Zバッファのフォーマットは D3DFMT_D16 です
1092:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1092:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1092:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です
1092:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1093:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です
1093:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1093:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です
1093:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です
1093:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です
1094:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です
1094:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です
1095:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です
1095:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です
1095:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です
1095:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です
1095:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です
1095:描画用1チャンネル整数16ビット型カラーフォーマットは D_D3DFMT_G16R16 です
1096:描画用1チャンネル不動少数点16ビット型カラーフォーマットは D_D3DFMT_R16F です
1096:描画用1チャンネル不動少数点32ビット型カラーフォーマットは D_D3DFMT_R32F です
1096:最大テクスチャサイズ 幅:4096 高さ:4096
1096:テクスチャステージテンポラリレジスタ:使用可
1096:減算合成のハードウェア対応:ネイティブ
1097:頂点シェーダーバージョンコード:300
1097:ピクセルシェーダーバージョンコード:300
1123:バックバッファロック転送の時間:5623nsec  一時的な描画可能バッファを使用した転送の時間:731nsec
1124:バックバッファロックを使用しません
1124:Zバッファを作成します.... 成功
1134:プログラマブルシェーダーを使用します

1202:フォントの初期化を行います
1203:フォントの初期化は正常に終了しました
1208:文字コードバッファの初期化を行います... 完了しました
17421:ウインドウを閉じようとしています
17424:ウインドウが破棄されようとしています
17424:ソフトを終了する準備が整いました
17426:フォントの初期化を行います
17427:フォントの初期化は正常に終了しました
17427:Direct3DDevice9 の解放 3
17490:Direct3D9 DLL の解放 4
17491:DirectInput 関連の終了処理... 完了
17524:DirectSound の終了処理は正常に終了しました
17557:
17557:Alloc memory dump
17557:	Total size:0(0.000kb)  Alloc num:0
17557:
スペック不足が原因なのでしょうか?
それともOSでしょうか
他のソフトで非アクティブにしたらウィンドウ内が表示されなくなるというのは見たことないのですけど・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#10

投稿記事 by softya(ソフト屋) » 14年前

XPでの動作をすぐには確認できないですが、四聖龍神録他DXライブラリで作られたソフトのexeから起動するものの場合の動作はどうでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

L'z

Re: DXライブラリについて質問です。

#11

投稿記事 by L'z » 14年前

四聖龍神録Plusを試してみたのですがSetAlwaysRunFlagがONになっているようで
非アクティブにしても動作します。
非アクティブでも動作するものなら表示は行われます。

他も試してみます。

L'z

Re: DXライブラリについて質問です。

#12

投稿記事 by L'z » 14年前

「太鼓の鉄人」と「リンゴをカゴに入れるゲーム」は問題なく非アクティブでも表示されました。

作品お披露目掲示板の一番上にあったシューティングゲームだと私の同様非アクティブになるとウィンドウが真っ黒になりました。

さきほどの例は画像もなくDrawBoxとDrawStringだけで動作も軽いはずなので「太鼓の鉄人」と「リンゴをカゴに入れるゲーム」で表示されるのならスペックの問題ではない気もしてきました。

L'z

Re: DXライブラリについて質問です。

#13

投稿記事 by L'z » 14年前

連投ですみません。

太鼓の鉄人のソースをみてみるとClearDrawScreenがありませんでした。
なので、さきほどの例からClearDrawScreenを抜き

コード:

while(!ScreenFlip() && !ProcessMessage())
にしてみると表示されました。

ClearDrawScreenはSetDrawScreenで設定されたものをクリアするのであって裏画面に設定しているこのプログラムでは全く関係ないものな気がするのですが、なぜこれでうまくいくのでしょう?

起動時を除くと表画面は一瞬足りとも背景だけになることはないはずですよね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: DXライブラリについて質問です。

#14

投稿記事 by softya(ソフト屋) » 14年前

L'z さんが書きました:「太鼓の鉄人」と「リンゴをカゴに入れるゲーム」は問題なく非アクティブでも表示されました。

作品お披露目掲示板の一番上にあったシューティングゲームだと私の同様非アクティブになるとウィンドウが真っ黒になりました。

さきほどの例は画像もなくDrawBoxとDrawStringだけで動作も軽いはずなので「太鼓の鉄人」と「リンゴをカゴに入れるゲーム」で表示されるのならスペックの問題ではない気もしてきました。
XPで試してみましたが非アクティブな間は真っ黒になりますね。アクティブに戻ると描画が再開します。
もしかしたら新しい仕様なのかも知れません。
DXライブラリの本家掲示板か何処かでそんな話を読んだような気もします。
DXライブラリの本家掲示板を検索してみて見つからなかったらあちらで質問してみて下さい。
L'z さんが書きました:連投ですみません。

太鼓の鉄人のソースをみてみるとClearDrawScreenがありませんでした。
なので、さきほどの例からClearDrawScreenを抜き

コード:

while(!ScreenFlip() && !ProcessMessage())
にしてみると表示されました。

ClearDrawScreenはSetDrawScreenで設定されたものをクリアするのであって裏画面に設定しているこのプログラムでは全く関係ないものな気がするのですが、なぜこれでうまくいくのでしょう?

起動時を除くと表画面は一瞬足りとも背景だけになることはないはずですよね。
非アクティブだとProcessMessage()で待機するのでクリアしたまま待機しているのかも知れません。ClearDrawScreen()と順番を逆にすれば消えないかも知れませんね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

L'z

Re: DXライブラリについて質問です。

#15

投稿記事 by L'z » 14年前

softya(ソフト屋) さんが書きました: 非アクティブだとProcessMessage()で待機するのでクリアしたまま待機しているのかも知れません。ClearDrawScreen()と順番を逆にすれば消えないかも知れませんね。

コード:

while(!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen())
にしてみても真っ黒になりました。

ProcessMessage()で待機してもクリアされるのは裏画面なので関係ないと思います。

ClearDrawScreenを書かないことにしようかと思ったのですがそれだと画面に何も表示しないときにDrawBoxで全面を塗りつぶすなど余計な作業が増えますね。

とりあえず本家掲示板を調べてみようかと思います。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る