尝试重绘时Win32应用程序闪烁。有什么建议?

时间:2016-05-21 20:27:45

标签: c++

我正在制作俄罗斯方块游戏,需要在WinAPI窗口中绘制它。我使用FillRect()函数绘制板并使用自定义函数清除屏幕,该函数也使用FillRect()来清除屏幕。它工作得很好,但闪烁是杀了我!我已尽力掌握一切。我试图在WM_PAINT消息中重新绘制窗口,但它带来了另一个问题,它没有绘制它以前做过的板。我尝试用我用于绘制窗口的相同程序再次绘制我的板,但是无法弄清楚如何做到这一点,我将自定义坐标的RECT结构传递给绘制函数但是它显示了所有它是一个空白的屏幕。任何建议将不胜感激。请告诉我这个问题是否需要进一步澄清。

1 个答案:

答案 0 :(得分:1)

Sleep()不是特定于控制台。它只是标准的Windows API,可以在给定的时间内暂停执行当前线程。

你应该考虑Windows Timers。另一种可行的方法,通常对游戏等低延迟应用程序更有用,就是在事件循环的每次迭代中简单地测量时间并推进游戏。您应该使用 High Resolution Time Stamps ,因为如果从Internet网络时间调整系统时钟,常规系统挂钟时间可能会跳跃;挂钟时间也有一些明显的抖动。

相关问题