【发布时间】:2011-11-13 12:58:06
【问题描述】:
我在 wxWidgets 中开发了一个应用程序,我在其中使用位图进行绘图。所以当我的应用程序第一次启动时,它会从文件中读取坐标并相应地画线。该应用程序还从网络接收UDP数据包,UDP数据包还包含一些必须在屏幕上绘制的xy坐标信息,所以当接收到数据包时我重新绘制位图图像,并显示在屏幕上,我还需要刷新位图在鼠标移动事件中,因为在鼠标移动时,我必须在屏幕上绘制一些新的绘图。
所有这些都会增加运营成本并减慢我的 GUI。因此,请向我建议一些您认为在这种情况下可能有效的替代绘图方法。
我在谷歌上搜索了一下,得到了 OpenGL 的选项,但是由于时间紧迫,我不想使用 openGL,因为我没有任何 OpenGL 的经验。
【问题讨论】:
-
你有 1337 分。我不喜欢那样。赞成:P
-
你不能在内存中保存一个位图实例,只向它绘制新信息,而不重绘整个东西吗?并将位图拉伸到屏幕...
-
@Siddiqui 你不能做一个位图缓存,其中包含多个时间点的线条图像。然后你只需要组合几个位图(只要使用 XOR,如果背景是白色的)并将剩余的线绘制到结果。
-
让我直截了当地说:您有一个必须用鼠标绘制或从网络获取的形状填充的位图。一段时间后,必须重新绘制许多形状,这会使 GUI 陷入困境。您是否可以通过计算哪些形状不会改变并将它们绘制到第二个位图来优化,该位图用作新形状的新绘制的开始缓冲区?
-
游戏编程的一些基本经验法则:最大化数据的直通输出,搜索可以一次绘制多个形状的绘图函数。最小化运行时的计算:如果您可以为已绘制的形状提供多个缓存,请使用它。网上有很多有用的游戏开发教程。最后:使用另一个可以处理硬件加速并具有更好性能的 API。
标签: c++ bitmap drawing wxwidgets