如果你不懂什么叫渲染,这个链接中答主miccall的回答非常生动易懂, 介绍了关于从渲染到光线追踪的一系列基础概念。

单缓冲

由于每显示一帧图像都需要擦除屏幕,会导致闪屏.

双缓冲

  1. 显示器持续显示 前台缓冲区 的内容。
  2. 程序在 后台缓冲区 中完成一整帧画面的所有绘制工作(擦除、画图等)。
  3. 当后台缓冲区中的新一帧画面完全准备好后,执行一次 “交换” (Swap) 操作。
  4. “交换”后,后台缓冲区变为新的前台缓冲区,旧的前台缓冲区则变为新的后台缓冲区,等待下一帧的绘制。

这个“交换”操作通常非常快(在硬件层面往往只是交换一下指针),因此显示器永远不会看到一幅正在绘制的、不完整的图像。这就从根本上消除了闪烁和撕裂。

实现

要实现双缓冲需要调用几个Win32 API

  • CreateConsoleScreenBuffer
  • SetConsoleCursorInfo
  • SetConsoleActiveScreenBuffer
  • GetConsoleScreenBufferInfo
  • ReadConsoleOutput
  • WriteConsoleOutput
  • WriteConsoleOutputCharacterW

具体实现可以看这里