0

我目前正在尝试制作一些非常基本的绘图软件,这意味着我正在使用 SDL_MapRGBA 进行像素操作,但是我注意到这是非常占用处理器的。例如这段代码:

void fill_bkg()//sets the background to bkg_c with an alhpa of 255
{
     for(forl = 0;forl < window_w * window_h;forl++)
     {
         *(winpix + forl) = SDL_MapRGBA(smpl->format,bkg_c.r,bkg_c.g,bkg_c.b,255);
     }
}

正在使用我的处理器的 11%(60 fps),它只填充背景。bkg_c 是 SDL_Color。winpix 指向表面像素数据。window_w/h 设置为 1280 和 720。那么是否有更快的方法来执行此操作,例如使用 SDL_BlitSurface 的方法,或者 SDL_MapRGBA 是否很慢?提前谢谢。

4

1 回答 1

1

大约一百万个单独的操作几乎总是很慢。要使用一种颜色填充表面,您应该使用SDL_FillRect. 要使用预定义的图像(即非恒定颜色)填充它 - 使用SDL_BlitSurface.

于 2013-11-12T05:59:43.467 回答