SDL2 [优化]:SDL_Surface-> texture->复制比绘制渲染器更快?

时间:2016-06-21 09:34:30

标签: c graphics sdl

我想知道女巫的方式更有效率:

  • 修改大小为窗口的曲面的RGB像素数据,从此曲面创建纹理,然后将其复制到渲染上。

或(我用的是什么)

  • SDL_SetRenderDrawColor + SDL_SetRenderDrawPoint直接在双缓冲渲染器中,由缓冲区数组驱动

我更喜欢第一种解决方案,但我想在测试之前确定。 谢谢你,如果你知道SDL:)

1 个答案:

答案 0 :(得分:1)

对于每个像素的事物,操纵SDL_Surface的像素通常比使用SDL_RenderDrawPoint()快 方式。当然,如果只是一个像素或两个像素,不会有太大区别,但是填充整个窗口可能会。将这个表面变成纹理可能需要一点时间,但不会花很多时间(在我的计算机上,每帧增加大约2毫秒)。

但是,据我所知,最好的选择是访问屏幕表面的像素(SDL_GetWindowSurface()),然后使用SDL_UpdateWindowSurface()。

我相信SDL_RenderDrawPoint()的降低是由于CPU将像素传递到GPU所需的额外时间造成的(也许软件SDL_Renderer的运行速度更快?)。

希望这会有所帮助。