- 521 名前:502 mailto:sage [2007/11/01(木) 07:05:47 ]
- DirectX10ヘッダーファイルをDにポーティングしていれば、一番みんなが使いやすいんだろうと思うんだけど
C++でまずDirectX10をラップしてそれをDで使用するようにしました。 DirectX10.1とかでるし、dxgi.h、d3d10.h、d3dx10.hがころころ変わると思ったので。 以下スレチにならない程度にさわりを・・・ /* C++ */ class Device { public: _cptr<ID3D10Device> _cp; // _cpt<T>rはCOMをあつかうスマートポインタ }; class Swapchain { public: uint32 _width, _height; _cptr<IDXGISwapChain> _cp; int init( Device &dev, const DXGI_SWAP_CHAIN_DESC &ds); }; class Buffer { public: _cptr<ID3D10Buffer> _cp; }; とこんな風にまんま包み込んで、 Dに以下の様な関数をエキスポート Device * dx10g0_Device_new(); void dx10_Device_delete(Device *pthis); int dx10_Device_init(Device *pthis, void *pdevicesettings); int dx10_Device_DrawPrimitive(Device *pthis, uint type, uint n); int dx10_Device_DrawIndexedPrimitive(Device *pthis, uint type, uint indexcount); 中の関数はDirectX10APIより少々便利めにつくるようにしてます。 こうすることのメリットは、上でいったヘッダーファイルがかわっても(少しは)大丈夫なこと、 DirectX9に同様のものをつくることで、D側からはDirectX10、DirectX9が同じように扱えること。 Shader4.0をつかってしまったら、意味がないかもだけど・・・
|

|