图形.h 刷新屏幕
Graphics.h refresh screen
我做了一个小程序,显示一个3d立方体,你可以使用箭头键在任何轴上缩放。唯一的问题是 im 使用 cleardevice();
刷新立方体(以便在缩放立方体时没有"拖尾")。这工作正常,只是每次使用此方法刷新立方体时,屏幕都会黑屏一瞬间,从而导致烦人的闪烁。有没有更好的方法在用户每次更改立方体时刷新屏幕?我确实对此进行了研究,但我找不到任何合适的东西(也许我只是不擅长研究,但我找不到任何东西)
有两种
方法可以解决这个问题:
双缓冲
我不使用华大基因,所以我坚持使用他们的文档。 对于WinBGIm,您可以使用
- int swapbuffers (void);
在旧式华大基因上,请使用以下内容:
int oldv = getvisualpage( ); int olda = getactivepage( ); setvisualpage(olda); setactivepage(oldv);
与监视器使用垂直同步
您需要等待 VSync 才能调用
cleardevice();
。在DOS上,您可以使用VGA BIOS或直接VGA/VESA访问来获取信号。在更高的操作系统上,你需要使用某种gfx API或驱动程序API来获取VSync。在这两种情况下,请参阅目标平台的文档。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- 是否可以配置提升日志刷新?
- 如何在qt中同步应用程序和显示器的刷新率?
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- C++ 强制 std::cout 刷新(打印到屏幕)
- 在没有 DirectX 的 Windows 上获得精确的屏幕刷新率
- 图形.h 刷新屏幕
- 使用可可和C++时刷新屏幕上数据的正确方法是什么
- 如何刷新/重绘屏幕(不是程序窗口)
- 线程不刷新数据,在屏幕中显示数据时出错
- std::chrono::high_resolution_clock的精度(不是精度)和屏幕刷新率