在 XRender 中绘制三角形提供不规则输出
Drawing triangles in XRender provides irregular output
我正在尝试使用 X11 Window 系统的 XRender 扩展来绘制一系列构成五边形的三角形。但是,当我尝试使用 Triangles
请求绘制三角形时,它们形成了某种奇怪的伪五边形。
虽然我猜这是一个五边形,但我想画一个对称的五边形。
这是我要绘制的三角形:
[
[(100, 100), (200, 150), (0, 150)],
[(0, 150), (200, 150), (50, 200)],
[(200, 150), (150, 200), (50, 200)],
]
根据xtruss,这是我发送到服务器的请求。它似乎与我要绘制的三角形一致。我也尝试过使用 Src
操作并使 mask-format
成为 window 的视觉格式,但无济于事。
RenderTriangles(op=Over, src=pc#06000003, src-x=0, src-y=0, dst=pc#06000002, mask-format=None, triangles[0]={p1.x=100.00000, p1.y=100.00000, p2.x=200.00000, p2.y=150.00000, p3.x=0.00000, p3.y=150.00000}, triangles[1]={p1.x=0.00000, p1.y=150.00000, p2.x=200.00000, p2.y=150.00000, p3.x=50.00000, p3.y=200.00000}, ...)
绘图是通过先创建 window,然后创建 Picture
,然后绘制到 Expose
上的图片来完成的。我使用与创建它时使用的 window 相同的视觉格式创建图片。在绘制三角形之前,我使用 FillRectangles
请求将背景着色为白色。
在调试过程中,我试过一次只画一个三角形。第一个和第二个三角形绘制没有问题,但第三个三角形似乎根本没有渲染到屏幕上。
我也阅读了 XRender reference,但我似乎找不到任何表明我正在经历的行为的内容。
我相信是什么原因导致你的源图片是一个线性渐变填充的方式,它停止超过左 60 度斜坡边界。这是我在源图片为 Render.CreateSolidFill(pictSolid, 0.2, 0.2, 0.2, 1);
.
时得到的结果
您能否显示在您的 Triangles
请求中用作源图片的内容?
我正在尝试使用 X11 Window 系统的 XRender 扩展来绘制一系列构成五边形的三角形。但是,当我尝试使用 Triangles
请求绘制三角形时,它们形成了某种奇怪的伪五边形。
虽然我猜这是一个五边形,但我想画一个对称的五边形。
这是我要绘制的三角形:
[
[(100, 100), (200, 150), (0, 150)],
[(0, 150), (200, 150), (50, 200)],
[(200, 150), (150, 200), (50, 200)],
]
根据xtruss,这是我发送到服务器的请求。它似乎与我要绘制的三角形一致。我也尝试过使用 Src
操作并使 mask-format
成为 window 的视觉格式,但无济于事。
RenderTriangles(op=Over, src=pc#06000003, src-x=0, src-y=0, dst=pc#06000002, mask-format=None, triangles[0]={p1.x=100.00000, p1.y=100.00000, p2.x=200.00000, p2.y=150.00000, p3.x=0.00000, p3.y=150.00000}, triangles[1]={p1.x=0.00000, p1.y=150.00000, p2.x=200.00000, p2.y=150.00000, p3.x=50.00000, p3.y=200.00000}, ...)
绘图是通过先创建 window,然后创建 Picture
,然后绘制到 Expose
上的图片来完成的。我使用与创建它时使用的 window 相同的视觉格式创建图片。在绘制三角形之前,我使用 FillRectangles
请求将背景着色为白色。
在调试过程中,我试过一次只画一个三角形。第一个和第二个三角形绘制没有问题,但第三个三角形似乎根本没有渲染到屏幕上。
我也阅读了 XRender reference,但我似乎找不到任何表明我正在经历的行为的内容。
我相信是什么原因导致你的源图片是一个线性渐变填充的方式,它停止超过左 60 度斜坡边界。这是我在源图片为 Render.CreateSolidFill(pictSolid, 0.2, 0.2, 0.2, 1);
.
您能否显示在您的 Triangles
请求中用作源图片的内容?