在SDL中逐像素绘制似乎很慢

时间:2019-01-11 19:57:00

标签: c++ sdl-2

我制作了一个900x600的颜色结构指针数组(屏幕),希望将它们绘制在屏幕上。有点用,但是速度很慢。

我试图使对象的数组理解为指针,我试图修改我的plotPixel()函数,以便它不会更改每个像素的颜色,只有在新像素的颜色不同的情况下。

这是我的剧情像素函数:

void Graphics::plotPixel(float x0, float y0, Color * color)
{
    SDL_SetRenderDrawColor(renderer, color->r, color->g, color->b, color->a);
    SDL_RenderDrawPoint(renderer, x0, y0);
    previousColor = color;
}

void Graphics::plotPixel(float x0, float y0)
{
    SDL_RenderDrawPoint(renderer, x0, y0);
}

这是我的循环:

        screen[x][0] = new Color(255, 255, 255, 0);
        x++;

        // render
        for (int i = 0; i < 900; i++) {
            for (int j = 0; j < 600; j++) {
                if (graphics->previousColor != screen[i][j]) {
                    graphics->plotPixel(i, j, screen[i][j]);
                }
                else {
                     graphics->plotPixel(i, j);
                }
            }
        }

在Java中,它可以100 fps的速度快速运行!

0 个答案:

没有答案