Direct2d ID2D1HwndRenderTarget-> GetSize()返回零

时间:2015-03-07 17:12:47

标签: direct2d

我注意到,如果在BeginDraw()调用之后进行此调用,则在ID2D1HwndRenderTarget上调用GetSize()将返回0,0。否则返回正确的值。

这是“正常”行为吗?我没有在任何例子中看到过它。我确实花了几个小时在这上面摸不着头脑。

1 个答案:

答案 0 :(得分:3)

这是正常行为。

在您的情况下,该方法返回其const定义的返回值。

virtual D2D1_SIZE_F GetSize() const = 0;

最有可能的是,该方法在内部失败,因为无法在BeginDraw/EndDraw循环内“获取”渲染目标。

  

BeginDraw和EndDraw用于指示渲染目标所在   由Direct2D系统使用。不同的实现   调用BeginDraw时,ID2D1RenderTarget的行为可能会有所不同。   可以在BeginDraw / EndDraw之间锁定ID2D1BitmapRenderTarget   调用时,可以在BeginDraw上获取DXGI曲面渲染目标   在EndDraw上发布,而ID2D1HwndRenderTarget可能会开始批处理   例如,在BeginDraw上可能出现在EndDraw上。

备注部分: ID2D1RenderTarget::BeginDraw method