Direct3D9 "Clear" 函数未清除



所以我试图清除一个窗口,使其变为完全蓝色,但由于某种原因D3D9"清除(("函数不起作用。我已经做了错误检查,所以我100%知道是Clear((函数失败了,而不是其他什么。我已经用以前编码过的有效代码进行了检查,所以我不知道为什么这不起作用。Clear((的返回值为"-2005530516";,尽管我在网上找不到任何关于这意味着什么的信息。有什么想法吗?

#include "DirectX.h"
LPDIRECT3D9 d3d;
LPDIRECT3DDEVICE9 d3ddev;
int InitD3D(HWND hWnd)
{
d3d = Direct3DCreate9(D3D_SDK_VERSION);
if (d3d == nullptr)
return -1;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = true;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
if (d3ddev == nullptr)
return -1;
return 0;
}
int CreateBoard()
{
D3DRECT rect;
rect = { 100, 50, 200, 100 };

//d3ddev->Clear(1, &rect, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, NULL);
HRESULT result = d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, NULL);
if (result == D3DERR_INVALIDCALL)
{
MessageBoxA(NULL, "ERROR: FAILED TO CLEAR", "ERROR", MB_ICONERROR);
return result;
}
return 0;
}
void CleanD3D()
{
d3d->Release();
d3ddev->Release();
}

值&quot-2005530516";是HRESULT的十进制版本(通常打印为十六进制数字(。它是D3DERR_INVALIDCALL。当然,你正在分配这个值:

if (result = D3DERR_INVALIDCALL)

你是说?

if (result == D3DERR_INVALIDCALL)

最新更新