トップページ > 記事閲覧
Direct3D 9でフィルターが適用されない?
名前:mikan 日時: 2017/07/13 20:59

はじめまして。 少しSetUseDirect3DVersionについて質問させてください。 DirectX 11が使用できる環境でSetUseDirect3DVersion関数でDX_DIRECT3D_9を設定すると、 GraphFilterやGraphBlendが適用されずに困っています。 おそらくは私のプログラムの組み方に問題があるのだとは思いますが、 この現象がDirect3D 9を使用した場合の仕様ということはないでしょうか? 確認のため、ご返答いただければ幸いです。 ※追記 DirectX 11が使用「できない」環境でSetUseDirect3DVersion関数でDX_DIRECT3D_9を指定し実行してみたところ、 GraphFilterBltのガウスフィルタで添付画像のような例外が発生しました。 ちなみに、DX_GRAPH_FILTER_INVERTやGraphBlend関数のDX_GRAPH_BLEND_OVERLAYなどはちゃんと適用されており、 ガウスフィルタをコメントアウトすればプログラムは正常に動作していました。 http://fast-uploader.com/file/7055501849668/ テストした環境は GeForce GTX1060(DirectX 11環境) Intel HD Graphics(DirectX 9環境) Visual Studio 2017 です。
メンテ

Page: 1 |

Re: Direct3D 9でフィルターが適用されない? ( No.1 )
名前:管理人 日時:2017/07/14 01:46

手元で以下のようなプログラムを組んでみたのですが、エラー終了したり、効果が適用されないといったことは ありませんでした( 手元の環境は GeForce GTX660 Ti ( DirectX 11環境 ) です ) #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Screen, GrHandle ; ChangeWindowMode( TRUE ) ; SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; if( DxLib_Init() == -1 ) return 0 ; // 画像の読み込み GrHandle = LoadGraph( "Src1.bmp" ) ; // 出力先の画面を作成 Screen = MakeScreen( 256, 256 ) ; // ガウスフィルタを適用 GraphFilterBlt( GrHandle, Screen, DX_GRAPH_FILTER_GAUSS, 8, 900 ) ; // 裏画面に結果を描画 DrawGraph( 0, 0, Screen, FALSE ) ; // キー入力待ち WaitKey() ; DxLib_End() ; return 0 ; } ( Src1.bmp はDXライブラリのパッケージの中の『サンプルプログラム実行用フォルダ』の中にある画像ファイルです ) よろしければ mikanさんの環境でも上記のプログラムであれば正常に動作するかお試しになっていただけないでしょうか? あと、お使いのDXライブラリが最新のバージョンではありませんでしたら、最新のバージョンでは不具合が 直っている可能性がありますので、よろしければこちらの暫定の最新バージョンをお試しになってみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: Direct3D 9でフィルターが適用されない? ( No.2 )
名前:mikan(解決) 日時:2017/07/14 07:46

ご返答ありがとうございます。 サンプルプログラムを試したところ、ガウスフィルタは正常に機能するのを確認しました。 暫定最新版を適用して自前のプログラムを実行してみたところ、やはりDX_DIRECT3D_9では上手くいかないようなので、 こちらのプログラムに問題があるようです。 とりあえずDXライブラリ側に問題は無さそうなので、もう少し調べてみようと思います。 お騒がせしました。
メンテ
Re: Direct3D 9でフィルターが適用されない? ( No.3 )
名前:管理人(解決) 日時:2017/07/15 15:01

『シンプルなテストプログラムでは正常に動くが、複数の処理が組み合わさる実際の運用では正常に動作しない』 ということはよくありますので、最新のDXライブラリでも正常に動作しませんでしたら、DXライブラリの バグが原因である可能性は十分ありますので "やはりDXライブラリが怪しい" と思える際は不都合が無ければ件の GraphFilter や GraphBlend が 正常に動作しないプログラムを、動作に必要なファイルなども含めて BQE00322(あっとまーく)nifty.com ( (あっとまーく) を @ に置き換えてください ) に送ってください、原因を調べてみたいと思います m(_ _;m
メンテ

Page: 1 |

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

   クッキー保存