krustf の雑記 Twitter

2011-11-02

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で、こちらには関数は用意されていないので気をつけてください。

sisosiso 2011/11/02 20:09 最近D_IDirect3DDevice9* GetUseDirect3DDevice9( void ); なんてのがDxLibでひっそりと用意されたようです
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2429

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/krustf/20111102/1320226744