【问题标题】:C++ Increasing while loop refresh rate speed?C ++增加while循环刷新率速度?
【发布时间】:2020-01-16 13:44:00
【问题描述】:

所以我想在控制台中制作图形游戏。我只显示图形std::couting 彩色空字符串数组 像这样:

while (1 == 1) {
  for (int i = 0; i < height * width; i++) {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), pixels[i]);
    cout << pixel;
  }
  system("CLS");
}

array 'pixels' 存储每个像素的颜色,字符串pixel = " ";

问题是fps真的很低,你可以看到像素“闪烁”,绘制过程也很慢,你可以看到每个像素是如何淹没在屏幕上的。有没有办法提高 fps,或者有更好的方法来绘制像素?

【问题讨论】:

  • 1==1 的意义何在?只需使用while (true)
  • 为了加快速度,不要使用system("cls")。而是使用 this 之类的东西去开始并绘制下一帧
  • @Ayxan 似乎很有道理,我试试看!大约 1==1 我是 C++ 新手,不知道你可以用 true 做到这一点
  • 也许您可以在缓冲区中获取控制台窗口并使用该缓冲区进行绘图。我看到有人在做here

标签: c++ terminal console


【解决方案1】:

这种方法的 FPS 非常慢,因为每个system("CLS"); 都会使用命令解释器启动一个新进程并执行 OS 指令 CLS 以清除屏幕。这是一个非常高的开销。

不幸的是,没有标准的 C++ 方法来清除屏幕。这取决于平台。您需要在 linux 平台上使其依赖于平台 using curses 并使用 Windows 的控制台 API(请参阅 other question here 以及更多指向 API 文档的链接)。

【讨论】:

猜你喜欢
  • 2015-11-24
  • 1970-01-01
  • 2014-09-22
  • 2012-05-26
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
相关资源
最近更新 更多