トップページ > 記事閲覧
GraphFilter使用時の結果が変わる
名前:yuran 日時: 2016/01/21 23:43

いつもお世話になっております。 DxLibのver3.15cから最新版3.16に変更した際に GraphFilter関数の結果に不具合があるのを確認致しました。 以下のURLの画像は、DX_GRAPH_FILTER_HSBのBrightの値を200に設定し、 3.15cと3.16での結果をそれぞれキャプチャしたものです。 ttp://www.fastpic.jp/images.php?file=4667118002.jpg 以下は再現したコードになります。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } int testGrhandle = LoadGraph( "test1.bmp" ); //画像にフィルター処理を施す GraphFilter( testGrhandle, DX_GRAPH_FILTER_HSB, 0, 0, 0, 200 ); DrawRotaGraph( 320 , 240 , 1.0 , 0.0 , testGrhandle , TRUE ) ; WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } 何か解決策等があればご指摘頂けますと幸いです。
メンテ

Page: 1 |

Re: GraphFilter使用時の結果が変わる ( No.1 )
名前:管理人 日時:2016/01/23 20:46

載せて頂いたコードを手元の環境で実行した限りではアップして頂いた画像の 3.15c と同じ結果になりました 3.15c → 3.16 ではフィルターに関して殆ど変更点が無いので他の部分に原因がありそうです… 大変お手数で申し訳ないのですが、以下のことをお願いできますでしょうか m(_ _;m ・プログラムを実行した際に作成される Log.txt の内容を丸ごとこちらの掲示板にコピー&ペーストして  いただけないでしょうか? ・一つ前の正式公開バージョンである Ver3.15e でも同様の現象が発生してしまうか  お試しいただけないでしょうか? ・こちらのように MakeScreen で作成した画像を使用してフィルターを掛けた場合も同様の現象が  発生してしまうか試してみて頂けないでしょうか? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } int testGrhandle = LoadGraph( "test1.bmp" ); //画像と同じサイズの描画対象にできる画像を作成 int w, h ; GetGraphSize( testGrhandle, &w, &h ); int testScreenhandle = MakeScreen( w, h, TRUE ); //画像にフィルター処理を施し、その結果を描画対称にできる画像に出力 GraphFilterBlt( testGrhandle, testScreenhandle, DX_GRAPH_FILTER_HSB, 0, 0, 0, 200 ); DrawRotaGraph( 320 , 240 , 1.0 , 0.0 , testScreenhandle , TRUE ) ; WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } ところで、本件の現象は DX_GRAPH_FILTER_HSB だけではなく、どのフィルターを使用した場合も 同様の現象が発生してしまうのでしょうか?
メンテ
Re: GraphFilter使用時の結果が変わる ( No.2 )
名前:yuran 日時:2016/01/24 00:20

ご確認ご返答ありがとうございます! まず最初に、ご提案いただいたMakeScreenでの描画を試してみましたが、 描画結果に改善は見られませんでした。 また、Ver3.15e でも同様の結果となりました。 そのほかのGraphFilterにつきましても検証してみました。 お伝えしているDX_GRAPH_FILTER_HSBの他に DX_GRAPH_FILTER_INVERTでもVer3.15cと違う結果が発生しました。 また、DX_GRAPH_FILTER_HSBの追加情報として分かったことがあります。 「HueType」を1:絶対値に設定した場合はVer3.15cと同様に正常な描画がされるようですが、 「HueType」を0:相対値 に設定しますと描画がおかしくなるようです。 以下に「DX_GRAPH_FILTER_INVERT」と 「DX_GRAPH_FILTER_HSBのフィルタをかけていない引数を全て0にしたもの」を 画像にしてアップ致しました。 お手数ですが、ご確認いただけますでしょうか。 0163937132 (URLが禁止語句に引っかかるようですので、 前回のURLの数字部分のみ上記のものに変更してください。すみません・・・ また、最後にログを貼り付けておきます。 何卒宜しくお願いします。 0:ChangeWindowMode実行 10:ウインドウモードフラグが立てられました 20:DXライブラリの初期化処理開始 20: システムの情報を出力します 30: DXライブラリ Ver3.16 40: 論理プロセッサの数 : 8 50: OS Windows7 ( Build 7601 Service Pack 1 ) 160: 現時点のCPU動作速度:大体2.53GHz 168: MMX命令を使用します 176: SSE命令が使用可能です 183: SSE2命令が使用可能です 211: CPUベンダ:GenuineIntel 266: CPU名:Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz 274: COMの初期化... 成功しました 298: メモリ総量:4087.12MB 空きメモリ領域:873.29MB 306: タイマーの精度を検査します 314: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 322: パフォーマンスカウンターを使用します タイマー精度 : 2741.210000 KHz 337: ソフトの二重起動検査... 二重起動はされていませんでした 374: ウインドウクラスを登録します... 登録に成功しました 390: ウインドウモード起動用のウインドウを作成します 398: ディスプレイ情報のセットアップ開始 407: モニターの数:2 ディスプレイデバイスの数:5 415: No.0 モニター名:\\.\DISPLAY4 1280x1024 32bit 60Hz 423: No.1 モニター名:\\.\DISPLAY5 1280x1024 32bit 60Hz 464: ディスプレイ情報のセットアップ完了 544: ウインドウの作成に成功しました 553: ウインドウを表示します 717: IMEを無効にしました 730: ウインドウスタイルをウインドウモード用に変更します... 完了 815: DirectInput関係初期化処理 824: XInput DLL の読み込み中... 成功 865: DirectInput7 の取得中... 成功 933: 引き続き初期化処理... 初期化成功 955: ジョイパッドの初期化... 987: ジョイパッドの初期化は正常に終了しました 994: マウスデバイスの初期化... 初期化成功 1013: キーボードデバイスの初期化... 初期化成功 1045: DirectInput 関連の初期化は正常に終了しました 1064: DirectSound の初期化を行います 1072: DirectSound インターフェースの取得を行います.... 成功 1098: 引き続きインターフェースの初期化処理... 成功 1213: DirectSound デバイスを列挙します 1222: Module Name : Description : プライマリ サウンド ドライバー 1231: Module Name : {0.0.0.00000000}.{c8faa471-52ed-4eb4-a63c-dcc9b536d05f} Description : スピーカー (Realtek High Definition Audio) 1260: Module Name : {0.0.0.00000000}.{538520ba-db50-40fc-b1ed-dd4f38bc7720} Description : スピーカー (Avnex Virtual Audio Device) 1269: Module Name : {0.0.0.00000000}.{ada14291-3e60-4a8a-87d0-1b8d1759d9bc} Description : Realtek Digital Output (Realtek High Definition Audio) 1281: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 1290: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 1299: 利用可能サンプリング精度 1307: Primary 16bit = OK 8bit = OK 1316: Secondary 16bit = OK 8bit = OK 1325: 利用可能チャンネル 1333: Primary MONO = OK STEREO = OK 1342: Secondary MONO = OK STEREO = OK 1351: DirectSound の初期化は正常に終了しました 1359: d3d11.dll の読み込み.... 成功 1388: dxgi.dll の読み込み.... 成功 1405: API CreateDXGIFactory のアドレスを取得します.... 成功 1422: IDXGIFactory を作成します.... 成功 1443: API D3D11CreateDevice のアドレスを取得します.... 成功 1460: IDXGIAdapter を取得します.... 成功 1478: Direct3D 11 FeatureLevel 11_0 以上を対象とします 1486: ID3D11Device オブジェクトを取得します.... 失敗 1531: d3d11.dll の解放 1 1539: dxgi.dll の解放 1 1548: Direct3D11 のオブジェクト数を出力 1557: Direct3D11 のオブジェクト合計数 : 0 1579: DirectDraw オブジェクトの取得を行います.... 成功 1608: 引き続き初期化処理... 初期化に成功しました 1665: IDirect3D9Ex オブジェクトを取得します.... 成功 1686: IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 1971: 成功 1981: Driver:nvd3dum.dll Description:NVIDIA GeForce 9800 GT 1989: 画面のフォーマットは D3DFMT_X8R8G8B8 です 1997: 16bit Zバッファフォーマットは D3DFMT_D16 です 2005: 24bit Zバッファフォーマットは D3DFMT_D24X8 です 2013: 32bit Zバッファフォーマットは D3DFMT_D24X8 です 2021: 16bit カラーフォーマットは D3DFMT_R5G6B5 です 2029: 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 2051: アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 2060: アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2068: アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 2076: アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2085: DXT1テクスチャフォーマットはD3DFMT_DXT1 です 2093: DXT2テクスチャフォーマットはD3DFMT_DXT2 です 2102: DXT3テクスチャフォーマットはD3DFMT_DXT3 です 2110: DXT4テクスチャフォーマットはD3DFMT_DXT4 です 2118: DXT5テクスチャフォーマットはD3DFMT_DXT5 です 2127: 描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です 2135: 描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 2143: 描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 2151: 描画用 ABGR 整数 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 2160: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 2169: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 2177: 描画用1チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_L8 です 2185: 描画用1チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_L16 です 2195: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_R16F です 2203: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_R32F です 2211: 描画用2チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 2219: 描画用2チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_G16R16 です 2227: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_G16R16F です 2236: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_G32R32F です 2244: 一度に描画できるプリミティブの最大数:8388607 2252: 対応している最大頂点インデックス:16777215 2261: 同時にレンダリングできるバッファの数:4 2269: 最大テクスチャサイズ 幅:8192 高さ:8192 2277: テクスチャステージテンポラリレジスタ:使用可 2286: 減算合成のハードウェア対応:ネイティブ 2294: ハードウェア頂点シェーダーバージョンコード:300 2303: エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 2312: ピクセルシェーダーバージョンコード:300 2329: バックバッファロック転送の時間:59nsec 一時的な描画可能バッファを使用した転送の時間:690nsec 2339: バックバッファロックを使用します 2347: Zバッファを作成します.... 成功 2382: プログラマブルシェーダーを使用します 2448: フォントの初期化を行います 2458: フォントの初期化は正常に終了しました 2479: 文字コードバッファの初期化を行います... 完了しました 2501:DXライブラリの初期化処理終了 12066:ウインドウを閉じようとしています 12086:ウインドウが破棄されようとしています 12101:ソフトを終了する準備が整いました 12127:フォントの初期化を行います 12136:フォントの初期化は正常に終了しました 12153:Direct3DDevice9 の解放 2 12192:d3d9.dll の解放 1 12201:DirectInput 関連の終了処理... 完了 12246:DirectSound の終了処理は正常に終了しました 12287: 12297:Alloc memory dump 12305: Total size:0(0.000kb) Alloc num:0 12314:
メンテ
Re: GraphFilter使用時の結果が変わる ( No.3 )
名前:管理人 日時:2016/01/24 23:32

ご返答ありがとうございます MakeScreen でも結果は変わりませんでしたか… お試しいただきありがとうございます Log.txt を拝見する限りでは Direct3D 9 を使用した場合の現象のようです 手元の環境でも Direct3D 9 を使用すれば再現できるかと思い試してみましたが、 問題なく動作しました… アップして頂いたスクリーンショットも拝見いたしました 最初にアップして頂いたスクリーンショットと併せて 青成分が強く出ているのは分かるのですが、赤や緑の成分が消えてしまった わけでもなく、まだ法則性が見えません… 特に DX_GRAPH_FILTER_INVERT は何年も変更が無いので、こちらで異常が発生 するということは他の全てのフィルターで異常が発生してもおかしくないのに、 正常な結果が得られるフィルターもあるというのが更に謎を深めています… 原因の究明のために、Ver3.15c から Ver3.15e の間のいくつもの暫定バージョンで 最初に載せて頂いたプログラムをコンパイルして作成した実行ファイルをこちらに アップしました https://dxlib.xsrv.jp/temp/GraphFilterTest.exe ( 自己解凍形式です ) よろしければこちらの中にある GraphFilterTest_rev1194_3_15c.exe GraphFilterTest_rev1200.exe GraphFilterTest_rev1207.exe .... ... といった実行ファイルを末尾のrev番号の若い順に実行して頂いて、どの番号の 実行ファイルまで正常な描画結果が得られるかご確認いただけないでしょうか?m(_ _;m
メンテ
Re: GraphFilter使用時の結果が変わる ( No.4 )
名前:yuran 日時:2016/01/26 23:59

おぉ!テストのexeデータありがとうございます! いただいたすべてのexeファイル確認致しました。 実行結果です。 ----------------------------------------------------------------- GraphFilterTest_rev1194_3_15c.exe 正常 GraphFilterTest_rev1200.exe    正常 GraphFilterTest_rev1207.exe    正常 GraphFilterTest_rev1211.exe    異常 ・ ・ ・ 中略 GraphFilterTest_rev1249_3_15e.exe 異常 GraphFilterTest_rev1279_3_16a.exe 正常 ----------------------------------------------------------------- 以上となります。 GraphFilterTest_rev1211.exe 以降は全部だめかなと思いましたが、 一番最後のGraphFilterTest_rev1279_3_16a.exeも正常に描画されました。 何かてがかりとなれば幸いですが・・・。 お手数ですが、ご確認宜しくお願い致します。
メンテ
Re: GraphFilter使用時の結果が変わる ( No.5 )
名前:管理人 日時:2016/01/28 23:48

お試しいただきありがとうございます rev1207 から rev1211 の間の変更点を見てみたのですが、 「これが原因か!」と思えるような点は見当たらず、困惑気味です… 最新のバージョンで正常に描画されたということは、もしかしたらこちらの 暫定の最新バージョンでは直っている可能性がありますので、 よろしければお試しになってみてください 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.6 )
名前:yuran 日時:2016/01/31 17:54

暫定最新バージョンを試しました所、問題なく描画されました! こちらを使わせていただきます。 現状では原因はわからないとのことですので、 こちらの環境が変わらない間にバージョンアップで もしまた再現した際はご報告だけさせていただこうと思います。 本当にありがとうございました!
メンテ

Page: 1 |

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

   クッキー保存