追記 ( No.1 ) |
- 名前:Nameless 日時:2014/09/26 22:09
追記です。
ほかのパソコンでCreateMaskScreenのサンプルプログラムを試したところ
1.まったく壁画されない。たまにDxLib_Endでエラーがでる。
2.LoadMaskで0が返され、そのハンドルを使ったDrawMaskが失敗し、マスクが壁画されない。
それ以外は正常に動く?
という結果になるパソコンもありました。
この類のバグはあまり慣れていないので、
情報が足りてないようでしたら指摘してください。
|
Re: マスクを使うとエラーがでる ( No.2 ) |
- 名前:管理人 日時:2014/09/27 12:48
ご報告ありがとうございます
手元の環境で CreateMaskScreen のサンプルプログラムを試してみましたが、問題なく動作しました
グラフィックスデバイスかOSがエラーが発生するかどうかに関わってそうですので、
もし可能でしたらNamelessさんが試された「ほかのパソコン」で実行した際の Log.txt も
こちらに貼り付けていただけないでしょうか?
|
Re: マスクを使うとエラーがでる ( No.3 ) |
- 名前:Nameless 日時:2014/09/27 17:58
「ほかのパソコン」は手元にあるパソコンではないのですが、
そのときのLog.txtを回収し忘れていたので月曜日以降でないと
貼り付けれそうにありません。申し訳ございません。
一応OSはWindows7 Ultimate 64ビットです。
|
Re: マスクを使うとエラーがでる ( No.4 ) |
- 名前:管理人 日時:2014/09/28 23:01
Windows7 でも発生したということは、OSが原因ではなさそうですので
ほぼグラフィックスデバイスがエラーが発生するかどうかに関わっていると考えて良さそうです
ところで、お使いの開発環境は Visual Studio でしょうか?
|
Re: マスクを使うとエラーがでる ( No.5 ) |
- 名前:Nameless 日時:2014/09/29 07:11
はい。 Visual Studio 2012 Professional です。
|
Re: マスクを使うとエラーがでる ( No.6 ) |
- 名前:管理人 日時:2014/09/29 23:03
ご返答ありがとうございます
では、こちらに関数リファレンスの CreateMaskScreen のサンプルプログラムを
DXライブラリのソースつきでデバッグ実行ができるようにしたプロジェクトをアップしましたので、
お手数で申し訳ありませんが、よろしければデバッグ実行をして、アクセス違反が発生した箇所の
ソースファイル名と行番号、呼び出し履歴の状態を教えて頂けないでしょうか? m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibSourceTest.exe
|
Re: マスクを使うとエラーがでる ( No.7 ) |
- 名前:Nameless 日時:2014/09/29 23:26
とりあえず手元にあるNo.3のときのパソコンで似たようなことをやった時の呼び出し履歴のメモを貼り付けておきます。
・ 何も表示されないバージョン(サンプルプログラムのまま)
igdumdim32.dll!6af2263e() 不明
[下のフレームは間違っているか、または見つかりません。igdumdim32.dll に対して読み込まれたシンボルはありません。]
igdumdim32.dll!6aef033e() 不明
d3d9.dll!6c847353() 不明
d3d9.dll!6c848fba() 不明
d3d9.dll!6c84a82d() 不明
d3d9.dll!6c74d2a2() 不明
d3d9.dll!6c7928d5() 不明
d3d9.dll!6c7927e6() 不明
d3d9.dll!6c73812a() 不明
d3d9.dll!6c74d249() 不明
> ランチャー.exe!DxLib::Direct3D9_ObjectRelease(void * pObject) 行 1063 C++//実引数は0でない
ランチャー.exe!DxLib::Graphics_Hardware_D3D9_Shader_TerminateHandle_PF(DxLib::SHADERHANDLEDATA * Shader) 行 24181 C++
ランチャー.exe!DxLib::Graphics_Hardware_Shader_TerminateHandle_PF(DxLib::SHADERHANDLEDATA * Shader) 行 1160 C++
ランチャー.exe!DxLib::Graphics_Shader_TerminateHandle(DxLib::HANDLEINFO * HandleInfo) 行 21695 C++
ランチャー.exe!DxLib::SubHandle(int Handle) 行 312 C++
ランチャー.exe!DxLib::AllHandleSub(int HandleType, int (DxLib::HANDLEINFO *) * DeleteCancelCheckFunction) 行 478 C++
ランチャー.exe!DxLib::InitShader() 行 11519 C++
ランチャー.exe!DxLib::Graphics_Terminate() 行 15157 C++
ランチャー.exe!DxLib::NS_DxLib_End() 行 296 C++
ランチャー.exe!DxLib::DxLib_End() 行 78 C++
・ 壁画部分をループさせてエラーを起こさせたバージョン
KernelBase.dll!770e0cd6() 不明
[下のフレームは間違っているか、または見つかりません。KernelBase.dll に対して読み込まれたシンボルはありません。]
user32.dll!76d7d7bb() 不明
user32.dll!76d7885c() 不明
IMETIP.DLL!69d8a491() 不明
IMETIP.DLL!69d94fc8() 不明
IMETIP.DLL!69d8a810() 不明
IMETIP.DLL!69d8a4f6() 不明
IMETIP.DLL!69d94fc8() 不明
IMJPTIP.DLL!69ebdc6b() 不明
IMJPTIP.DLL!69ecb66a() 不明
IMETIP.DLL!69db19a2() 不明
IMETIP.DLL!69da6877() 不明
IMETIP.DLL!69dae848() 不明
IMETIP.DLL!69d9299b() 不明
msvcrt.dll!773898cd() 不明
msvcrt.dll!773898da() 不明
msctf.dll!77126e71() 不明
IMJPTIP.DLL!69ecc57e() 不明
IMJPTIP.DLL!69ecc585() 不明
IMJPTIP.DLL!69ebdd45() 不明
IMETIP.DLL!69db5f2c() 不明
IMETIP.DLL!69da49f8() 不明
IMETIP.DLL!69da4be3() 不明
IMETIP.DLL!69dbc930() 不明
IMETIP.DLL!69d92670() 不明
IMETIP.DLL!69da3efc() 不明
IMETIP.DLL!69da3f7e() 不明
user32.dll!76d76238() 不明
user32.dll!76d768ea() 不明
user32.dll!76d76899() 不明
user32.dll!76d77d31() 不明
user32.dll!76d78112() 不明
> ランチャー.exe!DxLib::NS_ProcessMessage() 行 520 C++//実引数msgの値{hwnd = 0x000c0334 {unused=196608 },message = 32767,wParam = 14,lParam = 0,time = 2309657,pt = {x=765 y=567}}
ランチャー.exe!DxLib::ProcessMessage() 行 556 C++
・ ループ中のDxLib::ProcessMessageを抜いてみたバージョン
> ランチャー.exe!DxLib::Graphics_D3D9_DeviceState_SetViewport(tagD_D3DVIEWPORT9 * Viewport) 行 6057 C++//エラー箇所は関数呼び出し直後。ほかのスレッドでのエラー?
ランチャー.exe!DxLib::Graphics_D3D9_DeviceState_SetViewportEasy(int x1, int y1, int x2, int y2) 行 6100 C++
ランチャー.exe!DxLib::Graphics_D3D9_DeviceState_SetRenderTarget(D_IDirect3DSurface9 * TargetSurface, int TargetIndex) 行 6251 C++
ランチャー.exe!DxLib::Mask_D3D9_DrawAfterFunction_PF(tagRECT * Rect) 行 304 C++
ランチャー.exe!DxLib::Mask_DrawAfterFunction_PF(tagRECT * Rect) 行 74 C++
ランチャー.exe!DxLib::Mask_DrawAfterFunction(tagRECT Rect) 行 1920 C++
ランチャー.exe!DxLib::DrawFillBox(int x1, int y1, int x2, int y2, int Color) 行 4477 C++
ランチャー.exe!DxLib::DrawBox(int x1, int y1, int x2, int y2, int Color, int FillFlag) 行 4443 C++
見にくくてすみません。もう一台は今から試します。
|
Re: マスクを使うとエラーがでる ( No.8 ) |
- 名前:Nameless 日時:2014/09/29 23:48
上のはver3.12eで試したので今いただいたver3.12fの物とは行にずれがあるようですね。
とりあえずいただいたもので試した結果は
igdumdim32.dll!7246afce() 不明
[下のフレームは間違っているか、または見つかりません。igdumdim32.dll に対して読み込まれたシンボルはありません。]
igdumdim32.dll!7240fc6b() 不明
d3d9.dll!73af0647() 不明
d3d9.dll!73aee32f() 不明
d3d9.dll!73aeed5f() 不明
d3d9.dll!739e3370() 不明
d3d9.dll!739eaf66() 不明
d3d9.dll!739eae8a() 不明
d3d9.dll!739e333d() 不明
d3d9.dll!739eae4a() 不明
> DxLibSourceTestVS2012.exe!DxLib::Direct3D9_ObjectRelease(void * pObject) 行 1579 C++
DxLibSourceTestVS2012.exe!DxLib::Graphics_Hardware_D3D9_Shader_TerminateHandle_PF(DxLib::SHADERHANDLEDATA * Shader) 行 24490 C++
DxLibSourceTestVS2012.exe!DxLib::Graphics_Hardware_Shader_TerminateHandle_PF(DxLib::SHADERHANDLEDATA * Shader) 行 2014 C++
DxLibSourceTestVS2012.exe!DxLib::Graphics_Shader_TerminateHandle(DxLib::HANDLEINFO * HandleInfo) 行 21742 C++
DxLibSourceTestVS2012.exe!DxLib::SubHandle(int Handle) 行 312 C++
DxLibSourceTestVS2012.exe!DxLib::AllHandleSub(int HandleType, int (DxLib::HANDLEINFO *) * DeleteCancelCheckFunction) 行 478 C++
DxLibSourceTestVS2012.exe!DxLib::InitShader() 行 11545 C++
DxLibSourceTestVS2012.exe!DxLib::Graphics_Terminate() 行 15183 C++
DxLibSourceTestVS2012.exe!DxLib::NS_DxLib_End() 行 296 C++
DxLibSourceTestVS2012.exe!DxLib::DxLib_End() 行 78 C++
となりました。
上に貼り付けたものと同じく
DxGraphicsAPIWin.cpp のDirect3D9_ObjectRelease関数でアクセス違反が起こっているようです。
|
Re: マスクを使うとエラーがでる ( No.9 ) |
- 名前:管理人 日時:2014/09/30 22:57
お試しいただきありがとうございます
呼び出し履歴を拝見する限りでは、エラーの原因となった箇所で停止しているわけではなく
後始末の段階で不具合を検知して停止しているようで、この方法では原因は突き止められないようです・・・
とりあえずマスクイメージをテクスチャに転送する処理がマスク処理でのみ使用している方式なので、
通常の画像用のテクスチャにイメージを転送するときと同じ方式にしてみました
これでエラーが解消されるかはわかりませんが、よろしければお試しになってみてください m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: マスクを使うとエラーがでる ( No.10 ) |
- 名前:Nameless 日時:2014/09/30 23:33
とりあえず試してみたのですが、同じところでエラーが出てしまいます。
画面も何も壁画されないままです。
|
Re: マスクを使うとエラーがでる ( No.11 ) |
- 名前:Nameless 日時:2014/09/30 23:46
こちらの環境で少し試していたのですが、
・サンプルプログラムのDrawBoxをコメントアウトする。
・サンプルプログラムのDrawBoxの直前に SetUseMaskScreenFlag(FALSE); を入れる。
のように、マスクを「使った」壁画を行わないならエラーは起こらないようです。
ただ、DrawMaskやLoadMaskをコメントアウトしてもエラーは出るので壁画時にマスクをかけるときに不具合が起きているのではないでしょうか。
推測にすぎませんが。
|
Re: マスクを使うとエラーがでる ( No.12 ) |
- 名前:管理人 日時:2014/10/02 00:37
お試しいただきありがとうございます、
そして重要な情報ありがとうございます
ご指摘の通りマスクを適用するときにエラーが発生している可能性が高いです
とはいえ、マスクを適用する箇所には決定的に怪しいことろは見当たらず・・・
とりあえず、マスクの適用にピクセルシェーダーを使用しないようにした場合は
正常に動作するかどうかを知りたいので、何度もお手数で申し訳ありませんが DxLib_Init を呼ぶ前の箇所に
SetUseNormalDrawShader( FALSE ) ;
という記述を追加して実行してみて頂けないでしょうか?
これで正常に動作すればマスクの適用に使用しているピクセルシェーダー関係が原因ということになります
|
Re: マスクを使うとエラーがでる ( No.13 ) |
- 名前:Nameless 日時:2014/10/02 18:19
試してみましたが、変わらずエラーが出てしまいました。
壁画結果も真っ黒のままです。
|
Re: マスクを使うとエラーがでる ( No.14 ) |
- 名前:管理人 日時:2014/10/03 02:08
お試しいただきありがとうございます
ピクセルシェーダーを使用するかどうかは関係無いようですね・・・
すみません、解決まではそれなりに時間がかかるかもしれません
次のテスト用として、マスク適用の処理を行う前に行う設定に一部不備があったのを修正しました
もしかしたらこれで正常に動作するようになるかもしれませんので、よろしければお試しください m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: マスクを使うとエラーがでる ( No.15 ) |
- 名前:Nameless 日時:2014/10/03 17:19
試してみたところ正常に動きました。
試したのは手元の一台だけなので、念のため他のパソコンでも試してから
解決にしようと思いますが、本当にありがとうございます。
|
Re: マスクを使うとエラーがでる ( No.16 ) |
- 名前:Nameless(解決) 日時:2014/10/04 18:07
以前のバージョンでエラーが出るパソコン3台(あの後もう一台見つかりました)
全てで正常に動作することを確認しました。
重ねてお礼いたします。
|
Re: マスクを使うとエラーがでる ( No.17 ) |
- 名前:管理人(解決) 日時:2014/10/06 22:31
お試しいただきありがとうございます!
正常に動作したということで何よりです
マスク処理では使用していない Direct3D の特定の設定の値の一つを無効な値にしてしまっている、というものだったのですが、
「無効な値を渡しても単に無視されるだけだろうから、多分これが原因ではないだろうな、でも一応・・・」程度の
候補だったのですが、まさかそれが原因だったとは・・・
ご迷惑お掛けしました orz
そして何度もテストにお付き合いいただきありがとうございます! m(_ _)m
|