direct graphic 9的运行时入口在文件d3d9.dll中,所以先载入此dll,代码如下:
HMODULE hM = LoadLibrary(_T("d3d9.dll")); // LoadLibrary是win32api
此后,d3d9.dll被载入到当前的进程里了,然后就是创建IDirect3D9*,但是,此创建函数的名称就是"Direct3DCreate9",它是个导出(export)的符号,以下面的方式获得:
typedef IDirect3D9 * (__stdcall *D3DCREATETYPE)(UINT);
D3DCREATETYPE d3dCreate = (D3DCREATETYPE) GetProcAddress(hM, "Direct3DCreate9"); // 已修正处
然后就像平时做的那样,传递dx9sdk版本号给它:
if(d3dCreate==0) {
// error! ....
FreeLibrary(hM);
}
IDirect3D9* pD3d9 = d3dCreate(D3D_SDK_VERSION);
if(pD3d9==0) {
// 创建失败....
FreeLibrary(hM);
}
然后像一般情况的使用,用于创建IDirect3DDevice9*就不细讲了。
最后,不能忘了释放工作:
pD3d9->Release(); //先释放IDirect3D9*
FreeLibrary(hM);
完