typedef HRESULT(WINAPI *LPDIRECT3DCREATE9EX)(
UINT SDKVersion,
IDirect3D9Ex **ppD3D
);
LPDIRECT3DCREATE9EX pDirect3DCreate9Ex = (LPDIRECT3DCREATE9EX)GetProcAddress(LoadLibrary(L"d3d9.dll"), "Direct3DCreate9Ex");
// Check for Direct3D9Ex support
if (pDirect3DCreate9Ex != NULL) {
IDirect3D9Ex *pD3DEx = NULL;
HRESULT hr = pDirect3DCreate9Ex(D3D_SDK_VERSION, &pD3DEx);
if (SUCCEEDED(hr) && pD3DEx != NULL) {
// 使用 pD3DEx 进行 Direct3D 9Ex 相关的操作
// ...
// 在结束时释放对象
pD3DEx->Release();
}
} else {
// 处理不支持 Direct3D 9Ex 的情况
}
Direct3DCreate9Ex 的作用与 Direct3DCreate9 类似,但是它创建的是一个支持扩展特性的 Direct3D 9Ex 对象。Direct3D 9Ex 提供了一些额外的特性,例如在窗口化应用程序中共享资源,以及更好地支持多线程操作。
需要注意的是,如果系统不支持 Direct3D 9Ex,Direct3DCreate9Ex 可能不会存在于 d3d9.dll 中,这时你需要处理这种情况。上述示例代码中通过使用 GetProcAddress 函数获取函数指针,然后检查指针是否为 NULL,以确定系统是否支持 Direct3D 9Ex。
转载请注明出处:http://www.zyzy.cn/article/detail/26222/Win32 API/D3d9.h/Direct3DCreate9Ex