我编写了一个基于SDL2的程序,用于Raspberry pi 3,并使用3.5英寸的波形SPI,由于SPI的并行接口速度慢。
在我的程序中,我画线,文字&做其他图形工作人员,然后我调用SDL_RenderPresent更新屏幕。这个功能很慢。
在我的应用程序中,每次只修改窗口的一小部分。我找到了一个解决方案来更新DirectFB窗口中唯一的一小部分,而不是整个显示,结果非常棒。如何只更新SDL中的特定矩形?
发布于 2017-01-02 18:36:45
SDL_RenderPresent可能“慢”,因为它做垂直同步。
来自wiki.libsdl.org:
如果您坚持整个渲染器的想法来自1.2曲面和闪烁,请将渲染器作为您的主面,而SDL_RenderCopy()作为该主面的blit函数,而SDL_RenderPresent()则是旧的SDL_Flip()函数。
并访问wiki.libsdl.org/MigrationGuide:
SDL_Surface/2D呈现:曲面仍然存在,但建议您在可能的情况下使用SDL_Textures和2D加速渲染器(SDL_CreateRenderer()),而不是使用SDL_Textures。
因此,如果将纹理呈现为纹理,则可以使用SDL_RenderCopy (采用剪裁矩形)将部分纹理复制到主SDL_Renderer。
当您完成呈现时,请使用SDL_RenderPresent在显示中显示/呈现它。这可能--取决于后端--只需等待vsync,然后执行缓冲区交换。
免责声明:我从未在SDL2中使用过SDL2后端,只使用过OpenGL后端。
https://stackoverflow.com/questions/41431319
复制相似问题