首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SDL中只更新一部分窗口?

如何在SDL中只更新一部分窗口?
EN

Stack Overflow用户
提问于 2017-01-02 18:00:16
回答 1查看 983关注 0票数 0

我编写了一个基于SDL2的程序,用于Raspberry pi 3,并使用3.5英寸的波形SPI,由于SPI的并行接口速度慢。

在我的程序中,我画线,文字&做其他图形工作人员,然后我调用SDL_RenderPresent更新屏幕。这个功能很慢。

在我的应用程序中,每次只修改窗口的一小部分。我找到了一个解决方案来更新DirectFB窗口中唯一的一小部分,而不是整个显示,结果非常棒。如何只更新SDL中的特定矩形?

EN

回答 1

Stack Overflow用户

发布于 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后端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41431319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档