如何在C中使用putpixel()时获得高帧率



我正在处理打印像素的代码。

// 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来加速屏幕上的打印像素过程?

恐怕答案几乎总是"不要使用putpixel() "。

问题是,它需要大量的工作来实现这么小的(一个像素的变化!),在你做任何有用的东西之前,你必须做成千上万次。

在一个理想的世界里,你可能希望它都被内联和优化到你真正需要的,但是如果putpixel()处理许多不同的屏幕格式(从我对BGI的记忆来看,它确实如此),那么这将需要高度不可能的内联和循环切换程度。

您要做的是找到一个更高级的操作,如putimage(),或在您的简单示例bar()中,它可以通过单个函数调用实现更多。

您可能希望转向更面向性能的东西,如SDL,但如果您尝试对每个像素使用函数调用,您仍然会遇到相同的基本问题。

putpixel()相当慢,无论您使用哪个框架或库。尝试创建一个位图,并计算每个像素的内存地址。

允许你这样做的跨平台框架是SDL和Allegro。

参见:

  • http://lazyfoo.net/SDL_tutorials/

最新更新