行的Direct2D / DirectX栅格化规则

时间:2018-07-15 21:56:33

标签: directx direct2d

我已经阅读了有关DirectX栅格化规则的在线文档,但是我仍然不明白为什么该代码不能在屏幕上显示任何可见的东西?

  

target-> SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED);
  target-> DrawLine(D2D1 :: Point2F(0.f,0.f),   D2D1 :: Point2F(10.f,0.f),redBrush,1.f);

当然,如果我将两个线点的y都从0.0f更改为1.0f,我将在Window客户区域的左上角看到一条可见的水平线,但我想了解这里涉及的原理。我无法从可用的文档中找出它们。

1 个答案:

答案 0 :(得分:1)

您应该在像素的中间绘制线条:

target->DrawLine(D2D1::Point2F(0.0f, 0.5f), D2D1::Point2F(10.f, 0.5f), redBrush, 1.f);

否则,如果不使用抗锯齿功能,则可以在0/0 ... 10/0线的任意一侧绘制线条。就您而言,它是在窗口画布之外绘制的。

请注意,屏幕上的像素实际上是坐标为D2D1::Point2F(0.0f, 0.0f)D2D1::Point2F(1.0f, 1.0f)的矩形。

D2D1::Point2F(0.5f, 0.5f)是该矩形的中心。如果围绕该坐标绘制1x1矩形,它将完全覆盖像素。