首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Direct2D是否使用后缓冲区?

Direct2D是否使用后缓冲区?
EN

Stack Overflow用户
提问于 2011-06-20 16:58:44
回答 3查看 2.9K关注 0票数 3

阅读https://learn.microsoft.com/en-us/windows/win32/direct2d/comparing-direct2d-and-gdi

表示模型

Windows最初设计时,内存不足,无法将每个窗口存储在自己的位图中。因此,GDI总是在逻辑上直接呈现到屏幕上,并应用了不同的裁剪区域,以确保它不会呈现在其窗口之外。在合同中,Direct2D遵循一个模型,在这个模型中,应用程序呈现到后台缓冲区,当应用程序完成绘图时,结果会被原子地“翻转”。这使得Direct2D能够比GDI更流畅地处理动画场景。

作者说,Direct2D使用后缓冲,我猜他所说的“翻转”指的是交换链。我创建了一个简单的演示,在鼠标点击的任意位置绘制一个矩形。但是以前的矩形没有被清除,所以它似乎是直接绘制到屏幕上,并且不使用任何回缓冲区。

EN

回答 3

Stack Overflow用户

发布于 2012-02-10 21:31:17

当您为您的RenderTarget操作初始化Direct2D时,可以在第二个参数中指定D2D1_PRESENT_OPTIONS选项。

我认为让您困惑的是D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS和缓冲区不是交换而是复制的事实。

票数 4
EN

Stack Overflow用户

发布于 2011-06-20 17:02:12

这并不能证明备份缓冲区的存在,它只意味着在重绘制之间没有清除回退缓冲区。正确的观察,错误的结论!

如果您增加了链中的回缓冲区的数量,您将开始注意到闪烁的矩形,当您继续单击,所以您应该始终清除您的后缓冲区之间的重画。

票数 1
EN

Stack Overflow用户

发布于 2011-07-29 12:58:19

Direct2D确实使用回缓冲。

也许您忘记清除您的呈现目标,这是回缓冲区,就在调用了开始绘图之后,所以以前的绘制仍然停留在那里?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6414756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档