トップページ > 記事閲覧
Bishamon for DirectX11 への組込み
名前:ねこーヒー 日時: 2015/11/09 04:20

エフェクトツールBishamonのDirectX9用SDKの販売が終了しており、11用を購入したものの参考資料が11用SDKに付属しているsampleだけという手探り状態です。 現在そのBishamonサンプルにDxライブラリを組込む挑戦をしているのですが、一つ問題が発生しました。 Bishamon側の裏画面とDxライブラリで使用している裏画面を統一する方法です。 おそらくBishamon側はDirectXの標準的な書き込み方 gl_lpD3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ZRGB(0,0,0), 0.0, 0);//画面初期化 gl_lpD3ddev->BeginScene();//描画開始 Draw();// 描画などの処理 gl_lpD3ddev->EndScene();//描画終了 gl_lpD3ddev->Present(NULL, NULL, NULL, NULL);//表画面に送る という形だと思うのですが、この書き込みを裏画面やMakeScreenで作った画面に書き込む方法、または逆にDrawGraphやDrawStringでの書き込みをBishamon側の裏画面に書き込む方法が分かりません。 SetUserWindowではBishamonサンプルが作ったウィンドウに書き込めるものの、裏画面が共有されておらず共存できません。 どなたかいい方法を知っておられませんでしょうか? どうかよろしくお願いします。 もしくは、根本的に別の解決方法でもかまいません。 (DxライブラリにBishamonサンプルを組み込もうとしたら、こちらも裏画面の問題の解決をしなくてはいけない/初期化の移植に躓いてしまいました)
メンテ

Page: 1 |

Re: Bishamon for DirectX11 への組込み ( No.1 )
名前:管理人 日時:2015/11/10 00:46

載せていただいたこちらのコード gl_lpD3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ZRGB(0,0,0), 0.0, 0);//画面初期化 gl_lpD3ddev->BeginScene();//描画開始 Draw();// 描画などの処理 gl_lpD3ddev->EndScene();//描画終了 gl_lpD3ddev->Present(NULL, NULL, NULL, NULL);//表画面に送る は引数などから判断すると DirectX9 用のもののようです DirectX11 のサンプルは上記とは異なる記述となっていると思うのですが、 そちらを拝見することは可能でしょうか? 因みに、私も DirectX11用SDK のライセンスを購入すれば話は早いのですが、ちょっと資料を 確認するためにライセンス料の2万円を支払わなければならないので躊躇してしまいます・・・
メンテ
Re: Bishamon SDK for DirectX11 ( No.2 )
名前:ねこーヒー 日時:2015/11/13 00:32

ご返信ありがとうございます。 自分が書いたものではないのでどこまで公開していいのかわからず、ぼやかして書いてしまいました。 ダメそうであればすぐ削除します。
メンテ
Re: Bishamon for DirectX11 への組込み ( No.3 )
名前:管理人 日時:2015/11/13 00:37

サンプルをアップしていただきありがとうございます サンプルのコードを拝見する限り対応はそれなりに腰を据えないと厳しい印象を受けたので 私もSDKのライセンスを購入しました で、BISHAMON の規約やライセンス認証の厳重さを見る限りサンプルの貼り付けも問題がありそうでしたので、 貼り付けていただいたサンプルのコードとBISHAMON SDKのライセンスを購入しないと知りえない記述がある 書き込みは削除させていただきました アップロードしていただいたソースも削除していただいた方が良さそうです、申し訳ありません m(_ _;m そして対応の検証作業についてですが、現在幾つか先に行わなければならない項目がありますので 少し先( 1〜2週間 )になってしまうかもしれません、すみません
メンテ
Re: Bishamon for DirectX11 への組込み ( No.4 )
名前:管理人 日時:2015/11/13 01:10

規約を改めて読んでみたり、こちらの誰でも見れるサポートBBSを拝見する限りでは http://www.matchlock.co.jp/bbs/ BISHAMON SDK のシンボル名やAPI名を出すくらいなら問題は無さそうです 過剰対応をしてしまいました・・・
メンテ
Re: Bishamon SDK for DirectX11 ( No.5 )
名前:ねこーヒー 日時:2015/11/13 03:08

本格的に対応してくださることに大変感謝致します('-'*) 時間についてはもっと後回しにしてくださっても無問題です。
メンテ
Re: Bishamon for DirectX11 への組込み ( No.6 )
名前:管理人 日時:2015/11/16 02:31

DXライブラリ側が持っている BISHAMON に必要な情報を取得できる関数を追加する程度なので 本格的な対応とは言えないかもしれませんが、とりあえず BISHAMON のサンプルのエフェクトを DXライブラリを使用したプログラムで出せるようにしてみようと思います
メンテ
Re: Bishamon for DirectX11 への組込み ( No.7 )
名前:管理人 日時:2015/11/24 00:28

すみませんお待たせしております、まだ完了していませんが途中経過の報告を・・・ とりあえずDXライブラリ側で作成した Direct3D 11 を BISHAMON dx11 に渡して初期化 しようとしたのですが、エラーが発生してしまいました 初期化失敗!となるだけで何が原因なのか全く情報が得られないので、現在マッチロックに問い合わせ中です 因みに「問題なく動作しているBISHAMONのサンプルプログラムを少しづつDXライブラリの プログラムに近づけていき、何の変更でエラーとなるか調べる」という方法があるので、 次はこれを試してみようと思います
メンテ
Re: Bishamon for DirectX11 への組込み ( No.8 )
名前:ねこーヒー 日時:2015/11/24 04:13

お忙しい中の対応、大変感謝しております。 一般ユーザー向けの販売を開始してから間もないため情報が少ないですね…
メンテ
Re: Bishamon for DirectX11 への組込み ( No.9 )
名前:管理人 日時:2015/11/29 04:52

お待たせしました、DXライブラリと BISHAMON dx11 の併用ができました よろしければこちらをダウンロードしてください 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)」をして下さい) BISHAMON dx11 の初期化で必要な ID3D11Device と ID3D11DeviceContext と、特殊効果用に必要な バックバッファと深度ステンシルバッファの ID3D11Texture2D を取得するための関数を追加しました // 使用中のID3D11Deviceオブジェクトを取得する( 戻り値を ID3D11Device * にキャストして下さい ) const void* GetUseDirect3D11Device( void ) ; // 使用中のID3D11DeviceContextオブジェクトを取得する( 戻り値を ID3D11DeviceContext * にキャストして下さい ) const void* GetUseDirect3D11DeviceContext( void ) ; // 使用中のバックバッファのID3D11Texture2Dオブジェクトを取得する( 戻り値を ID3D11Texture2D * にキャストしてください ) const void* GetUseDirect3D11BackBufferTexture2D( void ) ; // 使用中の深度ステンシルバッファのID3D11Texture2Dオブジェクトを取得する( 戻り値を ID3D11Texture2D * にキャストしてください ) const void* GetUseDirect3D11DepthStencilTexture2D( void ) ; あと、こちらに BISHAMON dx11 SDK に付属しているサンプルプログラムをDXライブラリと併用して 実行してみたプログラムをアップしましたので、よろしければご覧ください m(_ _)m ( プログラムを実行する場合は BISHAMON dx11 SDK の sample\_dx11\simple を  カレントフォルダ( 作業ディレクトリ )にしてください ) // BISHAMON 関係の定型処理をまとめたソース https://dxlib.xsrv.jp/temp/dxlib_bishamon_dx11.cpp https://dxlib.xsrv.jp/temp/dxlib_bishamon_dx11.h // WinMain があるソース https://dxlib.xsrv.jp/temp/dxlib_bishamon_dx11_test.cpp dxlib_bishamon_dx11.cpp の殆ど( 最後の方にある3つの関数以外 )は SDK のサンプルプログラムの コピペです、DxLib_Bishamon_DX11_Init で BISHAMON dx11 の初期化をしていて、そこで GetUseDirect3D11Device や GetUseDirect3D11DeviceContext などの追加した関数を使用しています 尚、SDK のサンプルプログラムでは dxDefferredContext を使用して BISHAMON の描画処理を別スレッドで 実行しているのですが、DXライブラリと併用する場合はそれが使用できない( 使用できるようにすることも できなくはないのですが、かなり大きな変更が必要なので今回は保留させてください・・・ )ので、 dxDeferredContext には NULL を代入しています WinMain が書かれている dxlib_bishamon_dx11_test.cpp では、サンプルと同じように bmfw::CreateAnimation で作成したエフェクトのインスタンスを使って時間推移や描画を行っています そしてDXライブラリと併用する場合、BISHAMONの描画は以下のような手順で行う必要があります  1.DXライブラリの RenderVertex 関数を呼んで、DXライブラリの描画処理を終わらせる  2.DxLib_Bishamon_DX11_DrawSetup を呼んで BISHAMON の描画準備を行う  3.BISHAMONの描画処理を行う  4.DXライブラリの RefreshDxLibDirect3DSetting 関数を呼んで、DXライブラリの Direct3D 11 の 設定を復帰させる   ( DXライブラリは他のライブラリなどで Direct3D 11 の設定が変更されることを前提としていないので、    この関数を呼んで設定を元に戻す必要があります ) 不明な点などありましたらお訊ねください m(_ _)m
メンテ
Re: Bishamon SDK for DirectX11 ( No.11 )
名前:ねこーヒー(解決) 日時:2015/12/01 05:34

動作と既存のプロジェクトへの組込みは確認できました!ラップまでして頂きましてありがとうございます('-'*) 一つだけ質問があります。透明な要素を持つオブジェクトとエフェクトを併用することはできない事でしょうか。 一部完全に透明な部分を持つ板ポリを利用しているのですが、やはり描画順の問題が出てしまいます。 他のプロジェクト等で回避している方法があれば、是非教えてください。 描画前と後で2回描画しても、2回描画されている側が明るくなるため板の形が浮き出てしまいます…。 zバッファを無視して表に描画するしかないでしょうか。 --追記-- 2d画像をzバッファに書き込む関数を見つけたので、二度手間ですが一度オブジェクトをmakescreenで作った画面に描画し、 スクリーンの背景色部分をマスクしてzバッファに書き込めばなんとかなるのかもしれない気がしてきました。 実用に耐えうるかは分かりませんが…
メンテ

Page: 1 |

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

   クッキー保存