在GPU上栅格化多边形以进行命中测试

时间:2014-10-25 12:17:30

标签: performance algorithm gpu polygon raster

任务

对多边形执行许多命中测试。我有大约10,000个多边形,每个多边形1000点。将对这些多边形进行大约100,000,000次命中测试。多边形可能相互接触但从不重叠。

解决方案

每次命中测试的简单点多边形测试。

问题

太慢了。

改进

栅格化多边形并检查命中测试的像素属于哪个多边形。

新问题

多边形的光栅化很慢。我使用此算法:http://alienryderflex.com/polygon_fill/

对GPU上的多边形进行栅格化,因为它针对此任务进行了优化,并且可以在硬件中执行。

问题

您如何看待我的想法,能否给我建议从哪里开始?它会导致高性能吗?

旁注

该区域被多边形所覆盖。我想维护一个像素列表而不是位图。

1 个答案:

答案 0 :(得分:1)

如果可以的话,这个答案建议使用GPU: How can I determine whether a 2D Point is within a Polygon?

你的情况似乎受到命中测试的支配,这些测试是光栅化的O(1)。 GPU能够光栅化到内存,但我不知道任何能够使用点列表的GPU /渲染API。此外,使用点列表,您可能会丢失命中检查的O(1)运行时。您可以使用16位光栅缓冲区来保存一些内存(不确定这是否适用于您的GPU设置 - 但您似乎只需要10000种颜色)。