トップページ > 記事閲覧
GraphFilterのバグ?
名前:alpha 日時: 2015/08/13 20:41

お世話になります。 以下のコードをメインループ内で実行すると 特定の値でエラーが出ます。 int GraphHandle = MakeGraph(40,100); if (GraphHandle != -1) { if (GetDrawScreenGraph(578,260,618,360, GraphHandle) == 0) { GraphFilter(GraphHandle, DX_GRAPH_FILTER_DOWN_SCALE, 8); DrawExtendGraph(578, 260, 618, 360, GraphHandle, FALSE); } DeleteGraph(GraphHandle); } 初回例外が 0x7178EAE6 (d3d11.dll) で発生しました (GameProg_2012.exe 内): 0xC0000005: 場所 0xFEEEFEF2 の読み取り中にアクセス違反が発生しました。 ハンドルされない例外が 0x7178EAE6 (d3d11.dll) で発生しました(GameProg_2012.exe 内): 0xC0000005: 場所 0xFEEEFEF2 の読み取り中にアクセス違反が発生しました。 となってしまいます。 使っているOSはWindows7,開発環境はVisualStudio2013Communityです。 よろしくお願いします。
メンテ

Page: 1 |

Re: GraphFilterのバグ? ( No.1 )
名前:管理人 日時:2015/08/14 01:17

ご情報ありがとうございます すみません、今夜は作業時間が確保できなかったので明日以降に確認します m(_ _;m
メンテ
Re: GraphFilterのバグ? ( No.2 )
名前:管理人 日時:2015/08/15 13:59

載せていただいたプログラムを組み込んだ以下のようなテストプログラムを実行してみましたが、 特にエラーは発生しませんでした #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) { return -1 ; } SetDrawScreen( DX_SCREEN_BACK ) ; int Count = 0 ; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; Count ++ ; DrawFormatString( 0, 0, GetColor( 255,255,255 ), "Count:%d", Count ) ; int GraphHandle = MakeGraph(40,100); if (GraphHandle != -1) { if (GetDrawScreenGraph(578,260,618,360, GraphHandle) == 0) { GraphFilter(GraphHandle, DX_GRAPH_FILTER_DOWN_SCALE, 8); DrawExtendGraph(578, 260, 618, 360, GraphHandle, FALSE); } DeleteGraph(GraphHandle); } ScreenFlip() ; } DxLib_End() ; return 0 ; } よろしければ上記のプログラムであれば alphaさんの環境でも正常に動作するか 試してみていただけないでしょうか?
メンテ
Re: GraphFilterのバグ? ( No.3 )
名前:alpha 日時:2015/08/15 18:14

ご提示頂いたプログラムを実行したところ、エラーは発生しませんでした。 まさかと思ってforループをいれてみたところ、再現できましたので載せておきます。(実際のソースにはfor 文をいれています) #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) { return -1; } SetDrawScreen(DX_SCREEN_BACK); int Count = 0; while (ProcessMessage() == 0) { ClearDrawScreen(); Count++; DrawFormatString(0, 0, GetColor(255, 255, 255), "Count:%d", Count); for (size_t i = 0; i < 10; i++) { int GraphHandle = MakeGraph(40, 100); if (GraphHandle != -1) { if (GetDrawScreenGraph(578, 260, 618, 360, GraphHandle) == 0) { GraphFilter(GraphHandle, DX_GRAPH_FILTER_DOWN_SCALE, 8); DrawExtendGraph(578, 260, 618, 360, GraphHandle, FALSE); } DeleteGraph(GraphHandle); } } ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: GraphFilterのバグ? ( No.4 )
名前:管理人 日時:2015/08/15 21:22

ありがとうございます、私の手元でも現象が再現しました GraphFilter の中で既に削除済みのグラフィックハンドルを使用しようとしてしまうことがあり、 それがエラーの原因となっていました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: GraphFilterのバグ? ( No.5 )
名前:alpha(解決) 日時:2015/08/15 21:47

これでやりたかったこと(ノイズのようなエフェクト)ができるようになりました! ありがとうございます!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存