我已经阅读了有关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客户区域的左上角看到一条可见的水平线,但我想了解这里涉及的原理。我无法从可用的文档中找出它们。
答案 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矩形,它将完全覆盖像素。