我在用一个代码打印像素。
// 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()时着色的速度非常慢,所以我想知道是否有其他库可以在Windows系统或Linux系统上使用C来加速屏幕上的打印像素过程?
2条答案
按热度按时间k5hmc34c1#
恐怕答案几乎总是“不要使用
putpixel()
”。问题是,它需要大量的工作来实现这么少(一个像素的变化!),你必须做成千上万次,才能做任何有用的事情。
在一个理想的世界里,你可能希望这一切都是内联的,并优化到你真正需要的,但如果
putpixel()
处理许多不同的屏幕格式(从我对BGI的记忆来看,它确实如此),那么这将需要非常不可能的内联和循环非切换程度。你要做的是找到一个更高级的操作,比如
putimage()
,或者在你的简单示例中是bar()
,它可以通过一个函数调用实现更多功能。您可能希望迁移到更面向性能的东西,如SDL,但如果您试图对每个像素使用函数调用,您仍然会遇到相同的基本问题。
2uluyalo2#
putpixel()
是相当慢的,无论你使用哪个框架或库。尝试创建一个位图,并计算每个像素的内存地址自己。允许您做这样的事情的跨平台框架是SDL和Allegro。
参见: