DxLibからDirect3D9のデバイスを取得する
ものすごく面倒でしたがメモ。
LPDIRECT3DDEVICE9を取得したい
上のを読むと、ライブラリだけでは無理で、ソースファイルに添付されるヘッダがないと取得できないらしい。
というわけで、ダウンロードサイトからライブラリとソースコードを取ってくる。
DXライブラリ置き場 ダウンロードページ
ソースにあるDxStatic.hをインクルードすることで取得できるようになります。(DxStatic.hは他のいくつかのヘッダもインクルードしてるので面倒な人はソースのヘッダ全部コピペしたほうが良いと思います)
で、実際に使うにはこう。
#include <DxLib.h> #include <DxStatic.h> ::IDirect3DDevice9* get_device() { // GRHはGraphicsManage2.Hardのdefine auto dev = GRH.Direct3DDevice9Object; return reinterpret_cast<::IDirect3DDevice9>(dev); } ::IDirect3DDevice9Ex* get_device_ex() { auto devEx = GRH.Direct3DDevice9ExObject; return reinterpret_cast<::IDirect3DDevice9Ex*>(devEx); }
これで、Direct3Dのデバイスを直接要求するライブラリもそれとなく利用できるようになったのでした。
注意:ただ、これでDirect3Dのデバイスを要求するライブラリ等が動くかというと未保証なので気をつけてください。
追記:面倒なことせずに解決されていた
コメントから、BISHAMON関係でつい最近になって関数に追加されていたようです。
LPDIRECT3DDEVICE9取得関数の追加願い
2011年11月2日現在このスレからしか関数が追加されたバージョンはダウンロードできません。
この関数が追加されたのはバージョン3.06dなのですが、現在ダウンロードページでダウンロードできるのは3.06cで、こちらには関数は用意されていないので気をつけてください。