windows游戏编程大师技巧一书中讲到双缓冲,求指点,该怎么解决

windows游戏编程大师技巧一书中讲到双缓冲,求指点
我理解书中的是(可能是我理解的问题):开辟俩块内存,一块为主页面内存,一块为从页面内存。显示是主页面内存的东西。所以双缓冲就是在从页面绘图,然后在复制到主页面,然后显示。呃……这我就有点纠结蛋疼了。为何不直接在主页面绘图。我理解的双缓冲,绘图和显示应该同时进行。至少得俩个线程吧!!书中那个单线程,真的可以实现双缓冲吗?求懂游戏的指点!!

------解决方案--------------------
1. 双缓冲(double buffering)技术,其核心意思就是先在MemDC(内存)上画你想要画的图,等到在MemDC上画好后,将MemDC上的图,一次性画到硬件DC上。如果楼主对这个概念不是很清楚,可以去看看GDI方面的编程。

2. 在上面的基础上,可以实现多级缓冲,但最后一次总是将MemDC的内容画到硬件DC上,这些技术皆统称为双缓冲技术。

3. 双缓冲绝大部分情况下是单线程的,否则双缓冲也就没有意义了。因为必须先绘制完毕,再去显示,如果用两个线程,就可能造成还没有绘制完毕,就显示了。当然事情无绝对,如果你非要用多线程,那么就要注意线程的同步了。
------解决方案--------------------
90年代的游戏图像程序,在那个处理器和显卡都很弱智的年代,计算机在屏幕上绘图的时间远远要慢于内存数据拷贝的时间,所以双缓冲(double buffer)所工作的原理,就是先在后台内存绘图,然后直接将绘制好的内存块整体拷贝到显存。
关于楼主的问题,为什么不直接在主页面绘图;我们假设计算机绘图的性能不是很高,那么直接在主页面绘图,就会产生图像在屏幕上由上至下逐渐出现的情况;如果有双缓冲,在后台画好了再拷贝到前台,由于拷贝的效率高,至少可以保证图像一次性出现在屏幕上,而不是从上至下出现。当然,双缓冲也不能解决绘图性能不好的问题,如果绘图性能不好而使用双缓冲,就会出现慢帧(像慢动作一样)或者跳帧丢帧(就是卡的那种效果),但是可以保证双缓冲不会出现从上之下刷新图像的现象。
对于多线程,早起的游戏图像编程模型是不支持的,在后台绘图的的时候,前台就是干等着,什么事情也不做,后台画好了以后,也是同一个线程负责内存的拷贝。因为前台只有一个,后台不画完就算前台再开一个线程也只有等着。