2015-02-09 56 views
0

我需要画很多lines(千)每帧和OpenGL ES做得很好,但我听说polygons呈现比lines更快,因为这是如何优化现代视频卡。iOS和OpenGLES - 绘制内容:线条或多边形?

这听起来合乎逻辑,但对于便携式设备如iPhoneiPad这是否属实?

它更容易画一个line,我所需要的是坐标2 points。但是为了绘制与多边形相同的线,我需要进行额外的计算以获得4 points的坐标。使用多边形进行绘制会更快吗?

回答

0

这个问题不能简单回答。

  1. 你可以尝试绘制一些荒谬的行数,并比较它们使用多边形绘制相同的场景。将坐标预先生成并发送到GPU,以便排除生成数据的任何逻辑。同时尝试多次绘制场景并交换两种模式,以便排除任何异常,例如稍后绘制的异常可能会更快。然后比较两次,看看你是否有所不同,更重要的是获得显着差异。
  2. 如果你使用的是平截头矩阵,你将会在生成顶点数据时遇到一个问题,因为看起来更接近的线会更大。
  3. 如果每帧产生这些点并推送到GPU,则使用多边形发送更多数据会产生开销,这会使您回到使用多边形所获得的更多。
  4. 如果您还需要从每个帧的点上生成多边形顶点,那么执行该操作可能会有相当大的问题。这可以通过独立于openGL管道处理数据来解决,例如在某个后台线程上生成这些数据,然后在准备好之后将它们提供给主管道。如果后台工作速度太慢并且顶点数据开始堆积,这可能仍然会让您陷入麻烦。

所以一般来说,通过实现上述系统可以测试哪种方法更快,但您不应该期待任何魔法。如果你发现多边形真的快得多,那么你可能想要考虑的线路继续沿着这条路走,并试图测试是否可以足够快地发送顶点数据。如果您的性能仍然有所提高,那么您的下一个问题可能就在于CPU(生成顶点数据),而这些问题可能是您可能解决的问题,也可能无法解决。

所以这是相当多的“ifs”,但我有一种感觉,在测试第一部分后,您将放弃此优化。无论如何,如果你尝试其中任何一种,如果你在测试过的东西上发布了一些结果,什么设备和性能结果,我将不胜感激。