ATM我正在开发一款游戏,所以我正在寻找一种方法,以便在眨眼之间渲染整个区域。现在我遇到渲染速度慢的问题(或者说打印速度在这里是特定的,我知道cout是一种缓慢的方法,但这就像我现在使用的第一个选项)
因此有一些方法可以足够快地显示文本,所以我不会遇到字符闪烁或者只是逐个绘制字符的问题,因为我正在使用循环来绘制它们。
任何建议都是apreciated
编辑:即使每个人都在贬低这一点,我认为这是一个体面的问题,对初学程序员有用。我现在已经真正了解了应该如何解决这个问题,而不是无休止地在网上搜寻这个问题
答案 0 :(得分:3)
当涉及到传统终端支持方面的操作时,C ++标准输入/输出库非常有限。
您唯一的出路就是使用专门的库。正如我在评论中提到的,ncurses
或pdcurses
应该足够了,具体取决于您所使用的平台。
答案 1 :(得分:1)
只是一个快速比较表明,Visual Studio中的cout
比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.1s(0.098-0.113s),使用cout
('mytest'需要大约0.8s(0.776-0.860) )。