代码之家  ›  专栏  ›  技术社区  ›  SunnyShah

如何优化组合图形操作?

  •  0
  • SunnyShah  · 技术社区  · 14 年前

    下面是一个场景,一系列我需要绘画的操作,

    Q油漆工P(本);

    1)。P.FillRect(0,0320240,红色)

    2)P.抽屉(0,0100100,蓝色)

    3)P.FillRect(0,0320240,黄色)

    现在我要那个画家不要画第一个FillRect函数。 它不应该画线。 它应该只执行最后一个操作。

    有没有办法在qt中实现这种优化。

    任何库都支持这种类型的绘图/绘画优化吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Adam W    14 年前

    简言之,没有。但是,屏幕外渲染通常速度很快,qt双缓冲区小部件适合您。 Painting to QImage or QPixmap 也可以在非图形用户界面线程中完成,因此可以多线程绘制。qpixmaps还具有 QPixmapCache

    根据绘制命令的创建方式,可以自己进行优化。如果开始时知道所有命令,则可以使用一组形状,如果堆栈顶部包含在上次创建的形状中,则不要绘制该形状。


    但是,您应该对这段代码进行概要分析,看看它是否真的获得了什么。过早的微观优化常常导致浪费精力。

    我将从屏幕外渲染开始(如果可能的话是多线程的),如果速度太慢,尝试其他步骤。然而,在大多数情况下,标准的油漆方法将足够快。

        2
  •  1
  •   Daniel Albuschat    14 年前

    您总是可以将复杂的场景绘制到qpixmap中,然后在绘制时只对该pixmap进行少量绘制。当然,它需要在场景发生变化时更新(例如,它被调整了大小,其中的某个状态发生了变化,等等)。

        3
  •  1
  •   Stephen Chu    14 年前

    如果您正在寻找显示列表呈现优化,特别是您的示例中的遮挡测试,那么我认为qt本身不提供这样的功能。

    您可能想看看OpenGL是否具有此功能。如果是这样的话,那么可能画到 QGLWidget 会得到你想要的吗?