如何在 C 中使用 putpixel() 时获得高帧率?
How to get high frame rate while using putpixel() in C?
我正在使用代码打印像素。
// C code
#include <graphics.h>
#include <conio.h>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\TC\BGI");
for (int i = 0; i < 100; i++)
{
for(j = 0; j < 200; j++)
{
putpixel(i, j, GREEN);
}
}
getch();
closegraph();
return 0;
}
在这段代码中使用 putpixel() 时,有什么方法可以使 C 编译器的响应更快?执行 putpixel() 时控制台着色的速度非常慢,所以我想知道是否有任何其他库可以用来在 [=15= 上使用 C 来加速屏幕上的打印像素过程] 系统还是 Linux 系统?
putpixel()
非常慢,无论您使用哪个框架或库。尝试创建位图并自己计算每个像素的内存地址。
允许您执行此操作的跨平台框架是 SDL and Allegro。
另请参阅:
恐怕答案几乎总是"don't use putpixel()
"。
问题是要实现这么小的目标(一个像素的变化!)需要大量的工作,而且在你做任何有用的事情之前你必须做数万次。
在理想情况下,您可能希望将所有内容内联和优化到您真正需要的程度,但如果 putpixel()
处理许多不同的屏幕格式(据我对 BGI 的记忆,它确实) 那么这将需要极不可能程度的内联和循环取消切换。
你想要做的是找到一个更高级的操作,比如putimage()
,或者在你的简单示例中bar()
,它可以通过单个函数调用实现更多。
您可能想转向更注重性能的东西,例如 SDL,但是如果您尝试对每个像素使用函数调用,您仍然会遇到相同的基本问题。
我正在使用代码打印像素。
// C code
#include <graphics.h>
#include <conio.h>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\TC\BGI");
for (int i = 0; i < 100; i++)
{
for(j = 0; j < 200; j++)
{
putpixel(i, j, GREEN);
}
}
getch();
closegraph();
return 0;
}
在这段代码中使用 putpixel() 时,有什么方法可以使 C 编译器的响应更快?执行 putpixel() 时控制台着色的速度非常慢,所以我想知道是否有任何其他库可以用来在 [=15= 上使用 C 来加速屏幕上的打印像素过程] 系统还是 Linux 系统?
putpixel()
非常慢,无论您使用哪个框架或库。尝试创建位图并自己计算每个像素的内存地址。
允许您执行此操作的跨平台框架是 SDL and Allegro。
另请参阅:
恐怕答案几乎总是"don't use putpixel()
"。
问题是要实现这么小的目标(一个像素的变化!)需要大量的工作,而且在你做任何有用的事情之前你必须做数万次。
在理想情况下,您可能希望将所有内容内联和优化到您真正需要的程度,但如果 putpixel()
处理许多不同的屏幕格式(据我对 BGI 的记忆,它确实) 那么这将需要极不可能程度的内联和循环取消切换。
你想要做的是找到一个更高级的操作,比如putimage()
,或者在你的简单示例中bar()
,它可以通过单个函数调用实现更多。
您可能想转向更注重性能的东西,例如 SDL,但是如果您尝试对每个像素使用函数调用,您仍然会遇到相同的基本问题。