问题标签 [dirtyrectangle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
15934 浏览

graphics - 脏矩形

在哪里可以找到关于实现一种计算“脏矩形”以最小化帧缓冲区更新的算法的参考资料?允许任意编辑并计算更新显示所需的最小“位 blit”操作集的显示模型。

0 投票
3 回答
1560 浏览

optimization - 最优脏矩形集

我在这里寻找一种算法,独立于特定的编程语言。

问题:

我们有一个二维显示区域(想想简单的像素缓冲区)。周期性地改变一些像素。我们需要找到一组矩形来封装所有变化的像素。

计算一个包含所有更改像素的单个可能很大的矩形将是微不足道的,但也是不可取的。我们宁愿有多个、更小、更紧密的矩形,直到指定的最小尺寸(这是一个可以改变的变量)。

例如,假设在整个显示区域内,左上角的几个像素发生了变化,右下角的几个像素发生了变化。我们不想计算整个区域的单个脏矩形 - 我们需要两个脏矩形:左上角的一个小矩形和右下角的一个小矩形。

性能是至关重要的,因此这个问题。

这个问题一直都在出现,我想肯定是在视频编解码器和远程桌面压缩领域。在我的例子中,在涉及多个用户同时在共享区域中绘图的图形图像处理过程中,这是一个反复出现的问题。

有谁知道为此发布的算法或知道您过去使用过的解决方案?

谢谢!

0 投票
3 回答
522 浏览

java - 有没有办法只将特定的 JPanel 区域标记为不透明?

基本上我画了很多透明的JPanels;分析表明大部分时间都花在了 Component.paint() 中。可以彻底优化这一点,因为在大多数情况下,每个 JPanel 的真正非透明区域非常小,例如在边缘周围。

就目前而言,repainting() 一个组件将触发对其所有父级的重绘,因为 RepaintManager 无法知道脏父级区域实际上是不透明的,并且会在组件层次结构中上升。我正在考虑markCompletelyClean()在面板失效时调用所有父母并自己管理脏区addDirtyRegion()

但是,是否有更简洁的方法仅将 JPanel 的特定矩形标记为不透明(或透明,没关系)?

0 投票
0 回答
493 浏览

javascript - 优化 Html5 画布中的内容渲染

我正在开发一个使用 Html5 画布的图形上下文来呈现视图层次结构的开源库。但是我想做一些性能优化,允许更快地渲染完全不透明的内容。

我怎么能实现这样的逻辑?

您是否知道有关如何实施此类系统的良好信息资源或教程?

目前我正在使用类似于 ui-kit 的基本绘图模型,每个视图都代表一个屏幕上的矩形区域。渲染引擎与视图对象分开实现,并根据包含需要重绘的脏视图的列表来渲染内容。

编辑:

库和当前渲染系统
库是一个所谓的平台或抽象层,基于画布元素动态渲染图形的能力。我目前已经实现了管理显示列表等的基础知识,但还没有优化。

当前的渲染引擎正在使用缓冲区并缓存视图的绘图命令,以便以后可以重绘视图。然而,当只有一个视图无效时,需要重新绘制层次结构的绘制过程中存在过度的外壳。

我如何实现一个系统来管理屏幕内容的脏矩形?

0 投票
1 回答
9615 浏览

raspberry-pi - Raspberry PI 上 XBMC 上的脏区

我有一个树莓派,并从 raspbmc.com 加载了最新的独立版本。使用 XBMC 时,我看到 CPU 使用率始终在 90% 以上。在查看了 XBMC wiki 和常见问题解答后,脏区似乎是一种减少 CPU 使用率的流行方法。

advancedsettings.xml/home/pi/.xbmc/userdata/. 该文件的内容是:

我尝试了 XBMC wiki 中解释的脏区域模式 1 和 2 ,在这两种情况下,我都看到只有脏区域被显示,而其余区域是黑色的。OpenElec wiki说这是自 12 年 8 月以来构建中的一个已知问题。

现在,我能做些什么来解决/解决相同的问题?我以 1080p 播放高清电影,它们运行良好。但我有点担心 RPi 在关键事件发生之前可以占用如此多的 CPU 使用时间。

0 投票
0 回答
297 浏览

java - 如何在java中捕获屏幕的脏部分?

我正在开发 RDP 应用程序。服务器必须发送屏幕的脏部分,客户端必须更新图像的那部分。我可以使用 Robot 类发送桌面的总屏幕为

如果我想将屏幕的脏部分发送给客户端,那么如何识别桌面屏幕的脏区域并捕获该屏幕。

请告诉我在java中识别屏幕脏区的过程。

0 投票
1 回答
2468 浏览

java - 如何逐像素比较两个图像并从图像的脏部分帧新图像

我正在使用robot.screenCapture()和 frame捕获屏幕bufferedImage1。我再次捕获桌面屏幕和框架bufferedImage2

请告诉我如何逐个像素地比较这两个图像(bufferedImage1和)。bufferedImage2如果有任何差异,那么如何框出不同的部分?

0 投票
1 回答
2756 浏览

android - 位图不完全适合android中的矩形

我正在使用 android-V11 开发 RDP 客户端应用程序。

服务器:屏幕分为 4 个部分,分别发送 byte[]、left、top、right、bottom、Screen resolution(width --> 1024/1280, height --? 768/ 1024) 值为每一帧的图像数据给客户。

客户端:我正在使用表面视图来显示从服务器接收的图像。我需要显示 4 帧(服务器的一个屏幕)以完全适合平板电脑屏幕。

示例代码:

我们无法将位图完全适合矩形。框架显示在平板电脑中,它们之间有间隙。

调试代码后,似乎检索到的位图(bmp)宽度为 514,矩形(矩形)宽度为 640。因此,位图不适合矩形。

请告诉我如何缩放位图以完全适合矩形。

注意:我还需要捏缩放图像。

谢谢和问候亚米尼。

0 投票
1 回答
1020 浏览

wpf - WPF 性能。错误的脏矩形计算

我目前从事与 WPF 富客户端 LOB 应用程序中的性能问题相关的客户分配工作。

问题是应用程序运行非常缓慢/缓慢。尤其是数据表处理(滚动、排序、选择)非常慢并且使应用程序无法使用。

当包含几个文本框、组合框和标签的单个选项卡打开并处于空闲状态(等待用户输入)时,我分析了系统状态。

这些是我的发现:

  • 所有的渲染都是在 GPU 上计算的
  • 没有动画、位图效果、透明度等性能重的功能。
  • 当标签闲置时(只有光标在聚焦文本框中闪烁,选项卡的其余部分是静态的,甚至不包含任何数据)GPU运行高达90%
  • GPU drops to 0 whenever the tab loses focus
  • GPU百分比与窗口大小直接相关。一个小窗口将其降低到百分之几,全屏使其几乎达到 100%
  • WPF Perforator 告诉我 WPF 计算整个选项卡的脏区域,而不是只计算闪烁的光标
  • WPF Perforator 在空闲选项卡上报告大于 20/秒的脏矩形更新率,它们与 GPU 使用率直接相关

我的结论:在开发过程中,为了使 WPF 适合整个系统的后端驱动架构,引入了许多自定义代码(布局、事件处理等)。我的猜测是,由于某些自定义代码,WPF 的脏矩形机制已被破坏。这会导致过多的绘图活动,从而导致非常高的 GPU 使用率。这些不必要的活动导致上述问题。

现在我正在寻找我应该从哪里开始调查的任何建议。或者换句话说:为了破坏 WPF 脏矩形更新算法,开发人员可以犯哪些典型错误。任何输入都受到高度赞赏。

致以真诚的感谢和诚挚的问候!

曼努埃尔

0 投票
0 回答
111 浏览

macos - 使用目标 C 查找dirtyrect 或cliprect

是否可以使用 Objective C 在 Mac OS 中单独捕获脏矩形?

当显示屏幕发生变化时,是否有任何 api 会给出被修改区域的脏矩形或剪辑矩形?

我需要捕获屏幕并将屏幕更改反复发送到服务器。

最好的方法是什么?

请帮忙。

谢谢,普里亚