【发布时间】:2014-09-30 04:44:08
【问题描述】:
我尝试使用 Direct2D 绘制一个矩形。在初始化 Direct2D 设备和 Direct2D 设备上下文并设置渲染目标后,描述如下MSDN article,我尝试绘制如下矩形:
HRESULT result;
result = g_d2dContext->CreateSolidColorBrush(
D2D1::ColorF(D2D1::ColorF::Blue),
&g_SolidBrush
);
D2D1_RECT_F rect = D2D1::RectF(
g_targetRect.left + 10.0f,
g_targetRect.top + 10.0f,
g_targetRect.right - 10.0f,
g_targetRect.bottom - 10.0f);
g_d2dContext->BeginDraw();
{
g_d2dContext->DrawRectangle(rect, g_SolidBrush, 5.0f);
}
result = g_d2dContext->EndDraw();
if (FAILED(result))
{
OutputDebugStringW(L"The object was not in the correct state to process the method.");
}
EndDraw() 方法返回以下 HRESULT:0x88990001 (D2DERR_WRONG_STATE) - The object was not in the correct state to process the method。
矩形不会被绘制。我只得到黑色图像。
编辑:
我想问题是在调用 CreateBitmapFromDxgiSurface 之后获得指向位图/渲染目标的 NULL 指针。
g_d2dContext->CreateBitmapFromDxgiSurface(
dxgiBackBuffer.Get(),
&bitmapProperties,
&g_targetBitmap);
g_d2dContext->SetTarget(g_targetBitmap.Get());
但是为什么 targetBitmap 是 NULL 呢?
有什么想法吗?
提前致谢。
【问题讨论】:
标签: c++ directx direct2d hresult drawrectangle