程序图渲染优化:只绘制可见部分?

时间:2011-10-22 22:02:59

标签: java optimization graph rendering

背景

假设我有数百万的互连Node个实例,它们共同组成了一个图形。每个Node都有一个2D位置。用户必须能够平移该图的程序渲染。每个Node都有一个draw方法,但如果我draw每帧都Node,那就非常慢。

由于用户通常不希望看到整个图表,而是放大图片,因此优化是不会绘制屏幕外的Node

我的方法

将2D世界空间划分为矩形Segment。将每个Node分配给他们所在的Segment。在绘制时,首先找出用户视图与之相交的Segment组和draw只有Node在那些Segment s。

现在我的实际问题是:

如何确定Segment的最佳尺寸? (使其太大,与绘制所有内容的效果相同。使其太小并且还有太多要迭代。)

2 个答案:

答案 0 :(得分:1)

嗯,你总是可以通过试验和错误来确定它。 顺便说一下,细分的大小可能取决于缩放级别。

另一种可能的解决方案是有两个排序的节点数组。一个数组Node[] axx位置排序,另一个Node[] ayy位置排序。 如果要在(x1, y1) - (x2, y2)中显示节点,您将构建一组节点,这些节点位于使用边界过滤的已排序数组的交叉点。

答案 1 :(得分:1)

我认为Quad trees可能比划分为固定大小的矩形更有用。