对多边形执行许多命中测试。我有大约10,000个多边形,每个多边形1000点。将对这些多边形进行大约100,000,000次命中测试。多边形可能相互接触但从不重叠。
每次命中测试的简单点多边形测试。
太慢了。
栅格化多边形并检查命中测试的像素属于哪个多边形。
多边形的光栅化很慢。我使用此算法:http://alienryderflex.com/polygon_fill/
对GPU上的多边形进行栅格化,因为它针对此任务进行了优化,并且可以在硬件中执行。
您如何看待我的想法,能否给我建议从哪里开始?它会导致高性能吗?
该区域被多边形所覆盖。我想维护一个像素列表而不是位图。
答案 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种颜色)。