Re: たまにMakeScreenに失敗する ( No.1 ) |
- 名前:管理人 日時:2017/08/07 00:39
ログを拝見する限りでは Direct3D 11、 Direct3D 9 のどちらの初期化にも失敗していて、
ソフトウエアレンダリングモードで起動しているようです
そして、ソフトウエアレンダリングモードではアルファチャンネルつきの描画対象にできる画像の
作成はできないので、MakeScreen の第三引数を TRUE にして呼び出すと無条件で -1 が返ってきます
なので、根本的な原因は Direct3D 11、 Direct3D 9 の初期化に失敗してしまっていることなのですが、
お使いのPCに搭載されているグラフィックスデバイスは何でしょうか?( Geforce や Radeon など )
ただ、Direct3D 11, Direct3D 9 の初期化に失敗することに関してはDXライブラリ側では
どうしようも無いので、グラフィックスデバイスのドライバを最新のものに更新してみたり、
グラフィックスデバイス自体が不調である可能性もありますので、その場合はグラフィックスデバイスの
交換を検討されてみたりしてください
|
Re: たまにMakeScreenに失敗する ( No.2 ) |
- 名前:8127(解決) 日時:2017/08/07 12:28
管理人様、
グラフィックスデバイスはIntel(R) HD Graphics 4000 です。
なるほど、DirectX自体の不具合なのですね。
とりあえず、プログラム自体にはバグがないようなのでほっとしています。(後々不特定多数に公開するかもしれないので...)
グラフィックスデバイスの調子が悪いのはこちらの問題ですし、今のところは再起動すれば直るので
勝手ながら解決とさせていただきます。ありがとうございました。
|
Re: たまにMakeScreenに失敗する ( No.3 ) |
- 名前:8127 日時:2017/08/13 17:43
一度は解決とさせていただきましたがまた同じことについて不明な点がありましたので質問させていただきます。
↑の状況(ソフトウエアレンダリングモードで起動してしまった場合)はどちらにせよゲームはできないので、
起動時にダイアログを出して終了しようと考えています。
そこで、ソフトウエアレンダリングモードで起動したかを取得したいのですが、そのような関数はありますでしょうか?
GetUse3DFlag()は試しましたがTRUEが返ってくるようです。
また、Log.txtを開く以外の方法でお願いします。
|
Re: たまにMakeScreenに失敗する ( No.4 ) |
- 名前:管理人 日時:2017/08/14 15:33
|
Re: たまにMakeScreenに失敗する ( No.5 ) |
- 名前:8127 日時:2017/08/14 20:13
管理人様、
「// Windows版 VisualC++ 用」 のプログラムを動かしてみたのですが別のバグ?があるようで検証ができません。
内容はLoadSoundMemが特定の素材でフリーズするというものです(失敗ではなく処理が返ってこない)
フリーズを起こす素材は〜音人〜様の「動き01(ひょいっ)」です。(それ以外の50程度の音は正常に読み込まれた)
ttps://on-jin.com/sound/index.php
再現コード
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
ChangeWindowMode(true);
DxLib_Init();
volatile int a = LoadSoundMem("something.mp3"); //正常に読み込まれる
volatile int b = LoadSoundMem("動き01(ひょいっ).mp3"); //処理が返らない
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
・3.18cは正常に動作したので修正したバージョン特有の問題?
お忙しいと思いますが調査をよろしくお願いいたします。
ログ
0:ChangeWindowMode実行
0:ウインドウモードフラグが立てられました
4:DXライブラリの初期化処理開始
11: システムの情報を出力します
11: DXライブラリ Ver3.18f
12: 論理プロセッサの数 : 4
12: OS Windows7 ( Build 7601 Service Pack 1 )
114: 現時点のCPU動作速度:大体2.59GHz
114: MMX命令を使用します
115: SSE命令が使用可能です
116: SSE2命令が使用可能です
117: CPUベンダ:GenuineIntel
120: CPU名: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
121: COMの初期化... 成功
127: 非同期読み込み処理の初期化...成功
128: ファイルアクセス処理の初期化...成功
130: メモリ総量:8086.17MB 空きメモリ領域:4283.57MB
130: タイマーの精度を検査します
131: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
131: パフォーマンスカウンターを使用します タイマー精度 : 2533.398000 KHz
132: ソフトの二重起動検査... 二重起動はされていませんでした
134: ウインドウクラスを登録します... 登録に成功しました
135: ウインドウモード起動用のウインドウを作成します
136: ディスプレイ情報のセットアップ開始
137: モニターの数:2 ディスプレイデバイスの数:6
137: No.0 モニター名:\\.\DISPLAY1 1366x768 32bit 60Hz
138: No.1 モニター名:\\.\DISPLAY2 1280x1024 32bit 60Hz
206: ディスプレイ情報のセットアップ完了
363: ウインドウの作成に成功しました
364: ウインドウを表示します
914: IMEを無効にしました
915: ウインドウスタイルをウインドウモード用に変更します... 完了
946: DirectInput関係初期化処理
946: XInput DLL の読み込み中... 成功
983: DirectInput7 の取得中... DirectInput8 の取得を試みます...成功
1051: 引き続き初期化処理... 初期化成功
1066: ジョイパッドの初期化...
1211: 入力装置を見つけました
1213: Device Instance Name : PC Game Controller
1214: Device Product Name : PC Game Controller
1215: 周期的エフェクトの作成に失敗しました。
1219: ジョイパッドの追加は正常に終了しました
1220: ジョイパッドの初期化は正常に終了しました
1221: マウスデバイスの初期化... 初期化成功
1221: キーボードデバイスの初期化... 初期化成功
1223: DirectInput 関連の初期化は正常に終了しました
1232: DirectSound の初期化を行います
1232: DirectSound インターフェースの取得を行います.... 成功
1242: 引き続きインターフェースの初期化処理... 成功
1396: DirectSound デバイスを列挙します
1397: Module Name : Description : プライマリ サウンド ドライバー
1398: Module Name : {0.0.0.00000000}.{8455e110-f5b1-4157-8e24-93e035583be1} Description : スピーカー (Realtek High Definition Audio)
1398: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz
1399: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
1400: 利用可能サンプリング精度
1400: Primary 16bit = OK 8bit = OK
1401: Secondary 16bit = OK 8bit = OK
1402: 利用可能チャンネル
1402: Primary MONO = OK STEREO = OK
1403: Secondary MONO = OK STEREO = OK
1405: DirectSound の初期化は正常に終了しました
1407: d3d11.dll の読み込み.... 成功
1414: dxgi.dll の読み込み.... 成功
1415: API CreateDXGIFactory1 のアドレスを取得します.... 成功
1416: IDXGIFactory1 を作成します.... 成功
1427: API D3D11CreateDevice のアドレスを取得します.... 成功
1428: IDXGIAdapter を取得します.... 成功
1429: Direct3D 11 FeatureLevel 11_0 以上を対象とします
1429: ID3D11Device オブジェクトを取得します.... 成功
1459: IDXGIDevice1 を取得します.... 成功
1460: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました
1460: [ウインドウモード 640x480]
1461: IDXGISwapChain を作成します.... 成功
1464: IDXGIFactory->CreateSwapChain の戻り値:0x00000000
1465: IDXGIOutput を取得します.... 成功
1467: Graphics Device:Intel(R) HD Graphics 4000
1467: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1468: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です
1468: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です
1469: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です
1469: カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1470: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です
1470: DXT2テクスチャフォーマットは使えません
1471: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です
1471: DXT4テクスチャフォーマットは使えません
1472: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です
1473: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1473: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1474: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1475: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1475: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1476: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1476: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1477: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1478: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1478: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1479: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1480: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1480: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1481: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1481: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1482: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1482: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1483: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1483: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1484: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1484: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1485: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1485: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1486: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1486: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1487: 使用する機能レベル:D3D_FEATURE_LEVEL_11_0
1487: 同時にレンダリングできるバッファの数:8
1487: 最大テクスチャサイズ 幅:16384 高さ:16384
1488: 標準描画用の頂点バッファの作成.... 成功
1489: 深度バッファを作成します.... 成功
1490: シェーダーコード関係の初期化.... 成功
1535: 各種シェーダー用定数バッファの作成.... 成功
1539: 各種 ID3D11InputLayout の作成.... 成功
1612: 画像の単純転送処理の初期化... 成功
1628: フォントの初期化を行います
1630: フォントの初期化は正常に終了しました
1631: 文字コードバッファの初期化を行います... 完了しました
1638:DXライブラリの初期化処理終了
 |
Re: たまにMakeScreenに失敗する ( No.6 ) |
- 名前:管理人 日時:2017/08/15 00:44
|
Re: たまにMakeScreenに失敗する ( No.7 ) |
- 名前:8127(解決) 日時:2017/08/15 01:14
素早いご対応、ありがとうございました!
無事ファイルが読み込めるようになりました。
DirextXがおかしくなる現象は、すぐに再現できるものでもないのでGetUse3DFlag()の検証はまだなのですが
もし挙動がおかしいようならまた連絡させていただきます。
|