请原谅我,如果我的怀疑是愚蠢的或愚蠢的。我对DirectX编程完全陌生。只需拥有C++知识(非常基础的COM知识)。创建一个没有HWND输入参数的D3D设备到MSFT CreateDevice()函数
下面的代码示例来自MSDN Creating D3D device,它解释了如何从头开始创建D3D设备。
MyDoubt是:
在这里,函数 “pD3D-> CreateDeviceEx()” 发生在一个参数 HWND HWND。如果我正尝试从 commadline C++ win32应用程序创建D3D设备,那么我需要使用D3D设备接口中的某些功能。我如何获得HWND字段。在这种情况下, 如何创建D3D设备。请详细解释。
HRESULT InitD3D9Ex(/* IN */ HWND hWnd, /* OUT */ IDirect3DDevice9Ex ** ppD3DDevice)
{
HRESULT hr = E_FAIL;
IDirect3D9Ex * pD3D = NULL;
IDirect3DDevice9Ex * pDevice = NULL;
if(ppD3DDevice == NULL)
{
return hr;
}
// Create the D3D object, which is needed to create the D3DDevice.
if(FAILED(hr = Direct3DCreate9Ex(D3D_SDK_VERSION, &pD3D)))
{
*ppD3DDevice = NULL;
return hr;
}
// Set up the structure used to create the D3DDevice.
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
// Create the Direct3D device.
if(FAILED(hr = pD3D->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, NULL, &pDevice)))
{
*ppD3DDevice = NULL;
return hr;
}
// Device state would normally be set here
*ppD3DDevice = pDevice;
return hr;
}
我发现非常有用[此网页](http://www.directxtutorial.com/)了解配置和使用DirectX的第一步。 –