DXライブラリとの連携試行中のEIKIです。
解決した問題
1. DXライブラリの描画とエフェクト描画を併用した場合、DXライブラリの描画が成されない
未解決の問題
1. 描画を併用した場合、特定条件でロードした画像が白く塗り潰されてしまう
2. 描画順序の指定方法が分からない
進捗あり次第更新します
Page: 1
Author | Post |
---|---|
#1 Sat Oct 15, 2011 9:53 am
|
|
Member
Registered: Oct 2011
Posts: 16
|
DXライブラリとの連携試行中のEIKIです。
解決した問題 1. DXライブラリの描画とエフェクト描画を併用した場合、DXライブラリの描画が成されない 未解決の問題 1. 描画を併用した場合、特定条件でロードした画像が白く塗り潰されてしまう 2. 描画順序の指定方法が分からない 進捗あり次第更新します |
#2 Tue Oct 18, 2011 5:02 pm
|
|
Administrator
Registered: Oct 2011
Posts: 206
Location: Tokyo
|
DXライブラリ内で無駄なテクスチャスイッチを行わないようにしているために起きている現象だと思います。 「固定機能パイプラインとの共存について http://www.matchlock.co.jp/bbs/topic.php?id=19 」 でBishamon描画後にテクスチャステージ0をNULLにしてしまっているため、 実際はNULLなのにDXライブラリ内では同じテクスチャがセットされていると判断して SetTextureをコールしていないものと推測しました。
下記の様に改善すれば正しく表示されるようになると思います。
|
#3 Tue Oct 18, 2011 5:56 pm
|
|
Administrator
Registered: Oct 2011
Posts: 206
Location: Tokyo
|
DXライブラリ内を少々調べてみました。 描画順にプライオリティ付けする方法を2通りほど 見つけましたので参考にしてみて下さい。 両者ともBishamon描画前にはRenderVertexHardware関数で DX内の頂点バッファを強制描画させて下さい。 1. FVFを保持してBishamon描画後に元に戻す
2. Bishamon描画後にDrawPixelで画面外に点を描画する
左が1回目で奥、エフェクトが真ん中、右が2回目で手前になります。 |
#4 Wed Oct 19, 2011 3:40 pm
|
|
Member
Registered: Oct 2011
Posts: 16
|
ありがとうございます。いずれも提示された方法で解決することが出来ました。
現在ラッパーを整備中です。完成次第配布する予定です。 EIKI` _______________ twitter: @eiki_okuma |
#5 Wed Oct 26, 2011 9:27 pm
|
|
Member
Registered: Oct 2011
Posts: 16
|
おかげさまでラッパーが完成したので公開致します。
ソースコードのライセンスについて尋ねた所サンプルコードは改変しての再配布が可能(著作権表示は維持)とのことでしたので、プロジェクトに含まれております。問題があればお申し付け下さい。 http://media.illucalab.com/bmsample.zip また、解説はブログの方に投稿しております。 http://d.hatena.ne.jp/eiki_okuma/20111026/1319631385 EIKI` _______________ twitter: @eiki_okuma |
#6 Tue Feb 07, 2012 12:43 am
|
|
Member
Registered: Feb 2012
Posts: 1
|
EIKIさんのラッパーを使おうと思い、bmsampleサンプルを使おうとしています。
コンパイルは通るのですが、DxBM_Init();でエラーが出て起動はできません。 どういった原因が考えられるでしょうか? ・simpleサンプルでBISHAMONエフェクトの起動は確認済み。 ・EIKIさんのエフェクトをsimpleサンプルで動作確認済み。 ・for DirectX9 (インディーズ用)、1.0.3上書き済み ・DirectXのバージョン11 SDK (June 2010) ・VisualC++2008EXPRESS ・windows7 Home 64bit \BishamonSDK_DirectX9\include\bm3\core\bm3_RenderStateManager_inl.h template<typename StateChangePolicyType, typename RenderDevicePolicyType> void RenderStateManagerImpl<StateChangePolicyType, RenderDevicePolicyType>::Initialize(RenderStateInitializeInfo &info){ StateChangePolicyType::InitializeChangePolicy(info); RenderDevicePolicyType::InitializeRenderDevicePolicy(info); is_initialized_ = true; } InitializeRenderDevicePolicy実行時に bmsample.exe の 0x0060e353 で初回の例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 bmsample.exe の 0x77a615de でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 もし何か心当たりがありましたら、よろしくおねがいします。 |
#7 Wed Feb 08, 2012 3:49 pm
|
|
Member
Registered: Oct 2011
Posts: 16
|
どうやら(?)、vistaバージョン以降のDXライブラリがIDirect3DDDevice9ではなくIDirect3DDDevice9Exを返すので、そこに原因があるのでは?という話でした(Twitterより)
DeviceにIDirect3DDDevice9Exを入れた場合でも初期化できるようになりませんでしょうか。 (或いは、ラッパー側で一工夫すれば解決する問題でしょうか?) _______________ twitter: @eiki_okuma « Last edit by EIKI on Wed Feb 08, 2012 3:56 pm. » |
#8 Thu Feb 09, 2012 3:02 pm
|
|
Administrator
Registered: Oct 2011
Posts: 206
Location: Tokyo
|
Dxlibのデバイス取得がIDirect3DDDevice9Exを取得できる場合優先的にそちらを選択するようになっているみたいですね。
BISHAMON側でマスパーティクルの機能を使用する際にD3DPOOL_MANAGEDを指定しますが IDirect3DDDevice9ExがD3DPOOL_MANAGEDを許容しないため今回の現象が起こっているようです。 |
#9 Tue Feb 14, 2012 3:46 pm
|
|
Member
Registered: Oct 2011
Posts: 16
|
応急処置としてDXライブラリ側にSetUseDirect3D9Ex();という関数を追加して頂きました。
引数にfalseを指定することで、返されるデバイスがIDirect3DDDevice9になります。 が、この場合Direct3DDevice9ExのAPIであるSetMaximumFrameLatencyが使えなくなるという弊害があります。 これはVista以降のOSで遅延の原因になりえるレンダリング前フレームバッファをプログラム側で変更するというものです。 既にご検討頂いているようですが、MANAGEDを使わないマスパーティクル或いはマスパーティクル機能のOFFを実装して頂ければと思います。 宜しくお願いします。 _______________ twitter: @eiki_okuma |
#10 Mon Aug 13, 2012 9:22 pm
|
|
Member
Registered: Oct 2011
Posts: 16
|
1.0.5にて、依然IDirect3DDDevice9EXを使用すると競合しエラーが出ます。
以下に最小構成サンプルを上げました。 http://illucalab.com/temp/bishtest.zip ※ 実行には最新のDXライブラリと環境設定が必要です。 http://homepage2.nifty.com/natupaji/DxLib/dxdload.html ※ WinXP以前だと発生しません。 エラー内容はcrecrekokoさんのものと同一です。 SetUseDirect3D9Exをfalseにすると動作するので、同様の原因んだと思われます。 _______________ twitter: @eiki_okuma |
Page: 1
Bishamon Personal コミュニティ is powered by UseBB 1 Forum Software