gpt4 book ai didi

linux - SDL2 + openGL ES 2.0 帧速率性能提升,CPU 负载更少

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:40 27 4
gpt4 key购买 nike

我正在使用最新的(目前)SDL2 (2.0.8) + openGL ES 2.0 (GLSL 1.0) 在 Linux 系统上进行开发,最终目标是树莓派 3 板。到目前为止,我已经做了一些事情,比如使用 freetype 绘制文本、绘制线条、文本框(可编辑)、文本列表、波形框(我需要传递给函数的只是一个顶点数组)和其他使用 glDrawArrays() 的形状.现在,有些东西需要每秒刷新 10 次,而其他东西则需要每秒刷新 1 次。跳过以每秒 10 次的速度重新渲染所有内容的最佳方法是什么?因为显然 openGL 的工作原理是在每个“帧”上从头开始绘制所有内容。但是我知道并且您知道存在其他方法,包括:在您已有的屏幕顶部渲染或截取屏幕截图并在其上渲染快速变化的事物以及其他解决方案。在调用 SDL_GL_SwapWindow() 之前跳过重新做所有事情的最佳方法是什么?我如何拍摄屏幕截图并将其渲染到不可见缓冲区,然后仅渲染快速变化的对象,然后调用 SDL_GL_SwapWindow()?

This is a screen shot of the app so far drawing basic things

提前致谢。

最佳答案

我最终不得不意识到我一开始就不应该发布这个问题,但由于这是一个人们可以向他人学习的地方,我现在感觉好多了 :) 。所以,我必须做的就是简单地停止清除不可见缓冲区(为简单起见,我将其称为)并在其上渲染仅控制该更改。那些发生变化的是通过用矩形覆盖它们占据的区域来更新的,然后在该区域上绘制新的东西。我已经完成了,帧率刚刚“爆炸”。我真的不认为有更好的方法,因为我这样做根本不需要采取任何行动。我所要做的就是添加一些 if 条件,每次执行到达函数迭代必须在屏幕上绘制的控件并因此决定渲染什么和不渲染什么时,有选择地渲染或跳过这些条件。然而,每个控件都需要一套经过深思熟虑的结构,而不是声明和定义无穷无尽的全局变量,这只会让事情变得困惑和难以维护。

大家好。

关于linux - SDL2 + openGL ES 2.0 帧速率性能提升,CPU 负载更少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51220017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com