1

我正在使用代码来打印像素。

// 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 系统上使用 C 或一个Linux?

4

2 回答 2

2

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

问题是它需要大量的工作才能实现这么少(一个像素的变化!),而且在你做任何有用的事情之前你必须做上万次。

在一个理想的世界中,您可能希望所有内容都被内联并优化到您真正需要的内容,但是如果putpixel()处理许多不同的屏幕格式(据我记忆中的 BGI,它确实如此),那么这将需要极不可能的内联程度和循环断开。

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

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

于 2015-06-01T08:21:45.610 回答
1

putpixel()无论您使用哪个框架或库,它都非常慢。尝试创建位图并自己计算每个像素的内存地址。

允许您执行此类操作的跨平台框架是SDLAllegro

也可以看看:

于 2015-06-01T08:01:43.177 回答