仅用ncurses渲染更改的字符?

问题描述

我想知道,用ncurses尽可能高效地呈现更新的正确方法是什么? 目前,我正在按以下顺序进行渲染:

  1. 致电erase()清除所有内容
  2. 使用printw()将我的框架/动画/文本写入终端
  3. 致电napms(20)睡眠几毫秒
  4. 调用refresh()将框架渲染/显示到屏幕上。

这显然不是很有效-因为我一直在重新渲染所有内容。 尤其是在屏幕上写入大量内容时,一些闪烁/卡顿现象是显而易见的。

所以,我想只渲染从前一帧到当前帧的更改会容易得多。我的程序中已经有逻辑可以知道哪些字符已更改。 但是,我确实很难只重新渲染实际更改的字符。

我查看了move()mvdelch(),但是由于某种原因,我无法设法用新坐标替换某个坐标处的字符。相反,我总是在删除字符时“插入”它们,然后在该坐标处使用printw()吗?

因此,我的问题是:

  1. 调用刷新之前是否只替换从一帧更改为下一帧的字符会改善性能
  2. 如何用新坐标正确替换特定坐标处的字符?

边注:我正在渲染Unicode字符(使用ncursesw而不是ncurses链接)。 但是我不认为这是问题所在。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)