问题标签 [doublebuffered]

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 回答
412 浏览

java - 在 Swing 中使用双缓冲区时出现 NullPointerException

在下面的代码中,我使用 doubleBuffer 来避免图像闪烁,正如我的这个问题中所建议的那样

问题是我在这一行得到了一个 nullPointerException

我这样做的方法是否正确?请帮忙。谢谢

0 投票
0 回答
491 浏览

c#-4.0 - 使用 WS_EX_COMPOSITED 激活双缓冲时 100% CPU 负载

为了阻止我的应用程序闪烁,我尝试为我的所有控件和子控件激活 DoubleBuffering。

为此,我在主窗体中添加了以下代码片段:

问题是,在 WindowsXP 中,cpu 负载几乎达到 100% 并保持不变。在 Windows7 上没有问题。

它寻找我,因为它与这个问题中的问题完全相同。C# 中是否有“简单”的解决方案?或者以不同的方式询问 -> 通常是什么导致这种行为?所以我可以在我的应用程序中找出问题所在。

更新:也许有更多信息可以帮助你们帮助我。我想要做的是在主窗体的顶部显示一个带有进度条的半透明窗体。这个“progressBarForm”在第二个线程中运行这个进度条。在 Win7 上一切正常,正如上面提到的 WinXP(.net4,激活的桌面主题)在进度条显示一次后有 100% 的 cpu 负载 - 而且实际有效负载功能需要更长的时间才能完成 - 可能是因为高 - cpu-load 由进度条完成。我应该在哪里和什么地方再次检查?一些想法?

顺便说一句:我不认为线程有问题,因为当我在主线程中显示表单并且不刷新任何内容时,结果(高 cpu 负载)是一样的......

0 投票
1 回答
8232 浏览

java - 在 Java 中实现双缓冲

我有一个简单的 Java JFrame 画布。我每半秒左右更新一次屏幕上的内容,并且闪烁。我想实现双缓冲以消除闪烁,但我对 Java 还很陌生,不熟悉如何做到这一点。我找到了一些示例,但不确定如何将它们的方法实现到我的中。

以下是我现在拥有的基本设置。这不是我的确切代码 - 只是基本设置的一个示例。

感谢您朝着正确的方向努力!

0 投票
1 回答
2937 浏览

opengl - 双缓冲不起作用OpenGL

我想让它成为双缓冲,但它仍然在闪烁。它基本上是 OpenNI UserTracker 示例的修改版本,它在我的计算机上运行良好,但我认为我没有删除或显着更改任何重要的 OpenGL 命令,使其运行方式不同。我在我的电脑上运行 Ubuntu 10.04。

0 投票
2 回答
2185 浏览

winapi - 抑制 WM_ERASEBKGND 的正确方法是什么?

如果我需要使用双缓冲,我需要抑制WM_ERASEBKGND消息。

我可以处理WM_ERASEBKGND并立即返回。但是我可以将WNDCLASS/设置为而不处理消息吗WNDCLASSEX?这是正确的方法吗?hbrBackgroundNULLWM_ERASEBKGND

0 投票
2 回答
2150 浏览

c# - 如何防止图片框图像在移动时拖尾?

你好 stackoverflow 社区。我已经尝试寻找类似的问题,但我只发现了关于闪烁的问题,这与我遇到的问题不同。

PictureBox每当我在面板上移动它们时,我都需要帮助防止es 拖尾。我正在制作的应用程序类似于 MS Paint。当我单击 a 时,PictureBox我可以使用以下命令单击并拖动它:

并且我没有单击的其他图片框被绘制到 DoubleBuffered 面板,使用:

出于某种原因,当我拖动PictureBox它的背景图像时,它会拖过绘制的面板。

奇怪的是,这只发生在 Paint 事件上。如果我要制作面板的背景图像,则移动PictureBox不会拖尾。只有当我Image在面板上绘制 s 时才会发生这种情况。

这是一个例子在此处输入图像描述

我将不胜感激任何帮助,谢谢。

我简化了代码,这样更容易理解。(拖尾效应仍然存在)

它使用这个 doubleBuffered 面板类

现在我的代码需要 3PictureBox和 1DoubleBuffered面板。

表格被最大化,Panel1.size = (2000, 1200);并且PictureBox size = (700, 700)将每个PictureBoxes背景图像设置为随机的大细节图像。当我移动时会出现拖尾效应,pictureBox1我每次都可以重现。

0 投票
2 回答
208 浏览

performance - 使用双缓冲画布的简单动画不流畅

我尝试使用双缓冲区来开发一个简单的 Flash 游戏来绘制动画。

重绘发生在 Event.ENTER_FRAME 被触发时。

用于双缓冲的后缓冲是 BitmapData 类型。

动画非常简单:我在后台缓冲区中绘制了一个 20x20 像素的位图,随着 x 坐标的增加,它应该从画布的左侧平滑地移动到右侧。这基本上可以正常工作,但如果你仔细观察,你会发现这个运动有很大的中断。这似乎与帧速率无关,因为它经常超过 60。平滑移动的中断对于动画来说是不可接受的,但我很确定我在双缓冲方面没有做错任何事情,所以我我害怕这可能是 Flash 播放器的问题或其他什么...如果不是这种情况,我会很欣慰

请看一下显示简单动画的 swf:

https://dl.dropbox.com/u/55967135/test.swf

(顺便说一句。当运动基于两帧之间的时间时,动画的中断也不会消失 - 现在每帧恒定 2 个像素。)

我上传了一个非常轻量级的 flash builder 项目,包括上面 swf 的整个源代码: https ://dl.dropbox.com/u/55967135/test.zip

enterFrame() 是我的类 GraphicsController 的一个方法,它处理双缓冲。它由应用程序的 enterFrame(event) 方法启动:

帮助将不胜感激

谢谢

0 投票
1 回答
1370 浏览

opengl - 超过 60 fps 的 OpenGL 双缓冲

具有双缓冲的 OpenGL 应用程序如何实现超过 60 fps(显示刷新限制)?
它是否取决于驱动程序的实现,即它是使用双缓冲还是三重缓冲?

考虑下一个应用程序主循环:

如果我不使用显示 vsync 的花哨同步并且不想在显示图像时撕裂,则循环中的第二个语句是强制性的。通过这样的循环,我的 fps 与驱动程序实现相关:使用双缓冲,管道会停止,我存档大约 60 fps,而使用三重缓冲不会发生停止,我的 fps 仅取决于我的视频卡吞吐量。因此,如果需要归档高 fps opengl 应用程序,我应该在应用程序内实现三重缓冲。我对吗?

0 投票
1 回答
459 浏览

c++ - 似乎无法使用多台显示器进行双缓冲绘画

我正在尝试重新制作用 C++ 和 WinAPI 编写的 Windows 屏幕保护程序,以便在多个监视器上工作。我发现这篇文章提供了基础知识。但是当我在自己的代码中实现它时,我得到了一个奇怪的结果。看看这段代码:

绘画总是在主显示器上工作。但是当我画到辅助显示器时,我只能直接画到它的 DC。当我使用双缓冲技术(将 DIRECT_PAINT 预处理器指令注释掉)时,我只会在应该是红色的辅助监视器上看到黑屏。

我在这里附上两张截图。

第一个使用直接绘画的作品: 在此处输入图像描述

然后是双缓冲失败的那个: 在此处输入图像描述

任何想法我在这里做错了什么?

0 投票
0 回答
479 浏览

three.js - 闪烁着 collada 模型和网格

我是three.js 的新手,所以我需要一些帮助。

//加载区域

classes[0].value --- 它是区域(大约 350K 顶点)
classes[0].models[2].name --- 它是链接到 collada 模型,

three.js 里面有没有做双缓冲的工具?
如何避免闪烁?

这是屏幕截图。浏览器 Chrome v 22.0.1229.79 m 在此处输入图像描述