-4

ATM 我正在​​开发一款游戏,所以我正在寻找一种方法来在眨眼之间渲染整个字符区域。现在我遇到了渲染速度慢的问题(或者更确切地说是打印速度在这里具体,我知道 cout 一个缓慢的方法,但这就像我现在使用的第一个选项)

那么是否有某种方法可以足够快地显示文本,这样我就不会遇到字符闪烁或简单地一个接一个地绘制字符的问题,因为我正在使用循环来绘制它们。

任何建议都值得赞赏

编辑:即使每个人都对此表示反对,我认为这是一个体面的问题,对初学者很有用。我现在对如何解决这个问题有了一个实际的想法,而不是无休止地在互联网上搜索

4

2 回答 2

3

C++ 标准输入/输出库对于传统终端支持可以完成的操作非常有限。

摆脱这种情况的唯一方法是使用专门的库。正如我在评论中提到的那样,ncurses或者pdcurses应该足够了,具体取决于您所在的平台。

于 2013-04-09T17:44:28.953 回答
1

只是一个快速的比较表明,cout在 Visual Studio 中比printf(显着的差异)慢很多 - 我将返回并编辑确切的差异有多大。

显然,用于 UI 操作的库可能要好得多,因为它能够移动光标,并且只重绘实际更改的屏幕部分等。

编辑:我使用以下代码来测量两种输出方法的速度:

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <ctime>

int main(int argc, char **)
{
    clock_t t = clock();
    for(int i = 0; i < 40; i++)
    {
        if (argc == 1)
        {
            std::cout << "0123456789012345678901234567890123456789012345678901234567890123456789\n";
        }
        else
        {
            printf("0123456789012345678901234567890123456789012345678901234567890123456789\n");
        }
    }
    std::cout.flush();
    t = clock()-t;
    std::cout << "Time = " << std::setprecision(3) << t / (double)CLOCKS_PER_SEC;
    return 0;
}

printf在我的机器上,使用('mytest x')大约需要 0.1 秒(0.098-0.113 秒),使用('mytest')大约需要 0.8 秒(0.776-0.860 cout)。

于 2013-04-09T17:43:30.390 回答