gpt4 book ai didi

c++ - Direct2D - 保留现有内容并覆盖新值

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:40 25 4
gpt4 key购买 nike

我计划为我的应用程序开发一个 XY 绘图仪。给出一些基本的想法,它应该是什么样子(当然实现会有所不同),请引用herehere .

在模拟过程中(假设,完成模拟需要 4 小时),在固定的 X 轴上,应该(覆盖)写入新的 Y 值。

但是,Direct2D 的问题在于,每次调用 pRenderTarget->BeginDraw() 时,都会删除现有的绘图(/Plot/BitMap/Image 等)并创建新图像被绘制。因此我会失去旧的值(value)观。

当然,我总是可以在缓冲区/变量中缓冲旧的 Y 值,并在下一张图中使用它。但是,模拟运行了 4 个小时,不幸的是我无法保存所有 Y 值。这就是为什么我需要在现有的目标图像/绘图/等上渲染/绘制新的 Y 值。

而且,如果在一定时间内不调用 pRenderTarget->EndDraw(),我的应用程序就会因资源限制而崩溃。

如何避免这个问题并达到要求?

最佳答案

您要问的是一个相当复杂的要求 - 它比看起来更难! Direct2D 是一个 Immediate-Mode drawing API .在即时模式图形中,您在屏幕上绘制的内容没有状态维护或持久性。

在大多数即时模式图形 API 中,都有裁剪和脏矩形的概念。在 Direct2D 中,您可以使用 these three techniques 之一绘制到屏幕的子集。将屏幕外渲染为位图和双缓冲可能是一个值得尝试的好技术。例如你的过程变成:

  • 绘制到离屏位图
  • 位图位图到屏幕
  • 在新数据上,绘制到新位图/与现有位图结合

只有当您添加新数据/绘制时您的绘图不滚动或不改变比例时,此技术才有效。

关于c++ - Direct2D - 保留现有内容并覆盖新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24860870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com