问题标签 [double-buffering]

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 投票
1 回答
775 浏览

.net - 即使使用双缓冲 GDI+ 也会闪烁

我正在尝试将一个小图像从左侧移动到屏幕右侧。

我将用户控件的样式设置为:

在我的OnPaint处理程序中,我将对象绘制到一个BufferedGraphics实例,这是我的屏幕外缓冲区,然后e.Graphics使用单个调用将结果 BitBlt 到引用。

因此,我似乎按照书本做了所有事情,以进行超流畅的无闪烁绘图,但我仍然可以看到对象有点口吃。

所以基本上剩下两种可能性:正在调用的 Timer.Invalidate(DirtyRect)没有以恒定的时间间隔精确触发,导致对象出现断断续续的现象,或者 BitBlt 没有按预期工作。

有谁知道可能是什么问题?

更新:再想一想,它看起来更像是撕裂,而不是口吃或闪烁。因为有时对象似乎错过了最后几个像素。我将研究利用 VSYNC 的可能性。

0 投票
1 回答
204 浏览

java - 后缓冲 VolatileImage 调整大小

我有一个关于我的 java 小程序中的后备缓冲区的小问题。目前我还没有考虑在运行时调整我的小程序的大小。因此面板被调整大小,而我的后台缓冲区保持其初始大小。因此,只有我的小程序的一部分被重绘,这被我的图像大小所覆盖。尽管如此,我还是尝试使用

不幸的是,它表现得并不欣赏。一旦用户开始拖动以调整浏览器窗口的大小,娱乐意味着在一小段时间内没有后台缓冲区可绘制。因此面板在闪烁,要么是灰色背景,要么是以前的面板,要么是我要渲染的实际绘图。

我考虑在调整大小以降低闪烁行为时设置宽度和高度的偏移量,但这似乎仍然不是正确的方法,只是一种解决方法。

有什么建议可以在不闪烁的情况下调整大小?!

亲切的问候。

0 投票
2 回答
974 浏览

objective-c - 为什么 OpenGL 双缓冲在性能方面似乎不一致?

我正在 OSX 上制作一个简单的图形应用程序。我刚开始通过检查帧之间的系统时间差异来监控帧速率。它似乎每隔几帧就会挂起。

该应用程序在 NSTimer 对象上运行,当前设置为 200 fps(5 毫秒帧)。为了确保不仅仅是我的主代码变慢了,我注释掉了整个主循环,除了 [self.context flushBuffer]; (当然还有帧率采样代码)。即使重复这个单一的调用也会导致它一次挂起几帧。这是我的控制台输出的示例:

这是每次循环迭代之间的时间(以毫秒为单位)。在 200 fps 时,每帧应该是 5 毫秒左右,但它会反复挂起 10、15 甚至 20 毫秒。正如您在我的 -initOpenGL 函数中所见,垂直同步已禁用。

编辑,新信息:我可以确认这与双缓冲与单缓冲有关。当我初始化没有 DoubleBuffer 属性的 NSOpenGLPixelFormat 时,它以 200 fps 的速度完美运行。而有了这个属性,我继续口吃。

0 投票
1 回答
1757 浏览

bitmap - 使用 vsync 进行双缓冲(与屏幕刷新率同步) - C# windows 窗体

我一直在尝试以每秒 60 次的速度更新 PictureBox 的 BMP,其线条模式会随着每次更新而改变。发生的情况是图像在屏幕刷新之间进行了部分更新。所以,你看到的是一种模式的一部分,也是下一种模式的一部分。每次屏幕刷新时,我都需要精确更新一次。理想情况下,我的目标是更新后缓冲区,然后将其复制到前缓冲区。我听说您可以在游戏中使用 vsync 来锁定前端缓冲区,以便屏幕仅在屏幕刷新后立即更新。如果我可以利用这种锁定,它可以让我在每次刷新时精确更新一次。但我还没有弄清楚该怎么做。

有任何想法吗?

我确实尝试在 Windows 窗体中使用 DoubleBuffering = true 属性。但它可能不适用于 PictureBox。我使用 CopyMemory(本机 dll 调用)将新模式复制到 PictureBox 中的位图中。

在上一段中,我还尝试使用具有相同技术的 WriteableBitmap,但由于某种原因,后缓冲区从未复制到前缓冲区,即使我按照其他人在堆栈交换中建议的方式进行了操作。我试了几个小时左右。使用该技术,图像从未在屏幕上更新。

0 投票
2 回答
1462 浏览

java - 如何修复不良的双缓冲

我尝试按照双缓冲教程进行操作,但我真的不知道我做错了什么。在我完成教程之前它可以工作,但仍然偶尔会有闪烁。我有两个文件 Game 和 gameLoop

游戏:

游戏循环

0 投票
1 回答
142 浏览

jython - Jython 中的双缓冲

最近我开始学习 Jython,现在我的问题很简单。我想提高我的动画质量。不幸的是,我不知道如何为我的小程序添加双缓冲。你可以帮帮我吗?此致!

0 投票
1 回答
1398 浏览

java - JAVA中带有关闭按钮和按钮事件的自动移动图像

我有这个代码。在此代码中,图像使用 moveImage 方法从左向右移动,并使用代码中的 moveimg 方法从右向左移动。我现在想要的是工作一个按钮事件。代码中有一个按钮,我希望当我单击该按钮时它应该完成它的工作。但它没有做..这里的代码是:

0 投票
0 回答
140 浏览

android - 在相同的油漆上使用 2 种不同的颜色,对于相同的画布会导致闪烁

这是我正在使用的代码,它在背景上运行很重的部分,它绘制了一个不断增长的圆圈,当它在增长时,圆圈内的文本会淡出,问题是文本在蓝色(与圆圈相同的颜色)和白色(文本的颜色)。我正在使用双缓冲(使用画布,绘制我需要的所有内容,然后发布在 UI 线程上使用的图像)。

有什么建议么?

0 投票
1 回答
100 浏览

java - 双缓冲似乎不稳定

我正在尝试为游戏实现双缓冲,但我不确定我是否做得正确。

this.repaint()在我的主游戏循环中调用,然后应该这样做:

我基本上做了这个人在这里所做的事情:YouTube 视频我遇到的问题是,它似乎比我有双缓冲之前运行得更糟。有时项目冻结半秒钟然后又恢复并正常运行,然后在几分钟(或更短)内再次发生。

0 投票
4 回答
2148 浏览

java - 摆脱 SWT 中的闪烁

我们使用以下类在我们的 Java 应用程序中显示进度条:TextProgressBar

不幸的是,我们在使用它时遇到了一些闪烁问题(Win 7、Java 7)。您对我们如何避免这种情况有什么建议吗?我们能否以某种方式减少重绘它的频率,使用双缓冲或其他方式?非常感谢任何提示!