绘图功能的表现

Performance of drawing function

本文关键字:功能 绘图      更新时间:2023-10-16

我正在创建用于制作游戏的小型引擎/框架。这是一个很简单的问题,但我还没有找到答案,所以我想咨询一下你。

有一些由Graphic衍生出的class,具有Draw(...)函数。Draw()将被调用数十次甚至数百次(如果有许多精灵要渲染)。Draw()太大,不能内联(10-20行)。

  1. 我希望它是virtual(有时但很少我会使用多态性*)。我认为它不应该对性能有太大的影响,但是你认为它应该是virtual吗?
  2. 应该有一些参数(2-6)描述位置渲染(等)?我不知道传递很多参数是否会使它变慢。也许每个可绘制对象都应该有自己的位置/面积数据?

最重要的是2.

*交货。与动画

任何需要绘制的对象都会影响大量像素;绘图本身可能比调用绘图函数花费更多的时间,所以调用开销可以忽略不计。在分析显示它是一个瓶颈之前,不要担心它。

首先,您应该选择在内存中,使用BitBlt, StretchBlt函数的双缓冲区绘制。

  • 如果基类将virtual声明为纯虚,则根本不会产生性能问题。
  • 是的,传递多个参数会使它变慢——把它们放入结构中,并传递该结构的引用/指针;或者使用共享区域(类中的私有变量)
  • 是的,对于重画(重新绘画)将需要与对象相关的所有数据-这是显而易见的!