gpt4 book ai didi

delphi - FMX Direct 2D 问题

转载 作者:行者123 更新时间:2023-12-03 18:42:51 30 4
gpt4 key购买 nike

大家下午好!

我目前的一个项目遇到了一个相当烦人的问题。我正在我当前的一个项目中使用硬件库(Andreas Hausladen 的 NVAPI Pascal header 翻译)。这个库允许我从 NVIDIA GPU 检索信息。我正在使用它来检索温度,并在 Firemonkey 的 TAnimateFloat 的帮助下,我正在调整定制表盘上的角度以指示温度。

由于 FMX 在 Windows 上默认为 Direct 2D,因此我可以使用任何各种“游戏玩家”工具(MSI Afterburner、FRAPS 等)来监控 FPS。

我遇到的问题是,当我将系统置于 sleep 模式(挂起到 RAM/S3),然后再次启动时,我的应用程序上的界面被黑屏(部分或完全),并且 UI 上什么也没有明显令人耳目一新。我定期调用 NVAPI 库的初始化并通过计时器检查结果,但这并不能解决问题。我也在跑ProcessMessagesrepaint在父表盘和它的子控件上(因为我似乎无法找到 repaint 的表格或什至等效)。

我尝试了各种版本的库,每个版本都存在相同的问题。下一段表明这实际上不是问题,它实际上是渲染器的错误。

我有一个解决方案,但我想知道是否有更...​​优雅、可用的东西。我的解决方案包括添加 FMX.Types.GlobalUseDirect2D := False;之前 Application.Initialize在我的项目源中。但是,这会强制 FMX 使用 GDI+ 而不是 Direct2D。它当然可以,但是如果可以的话,我想将 D2D 作为一个选项保持打开状态。我可以使用 FindCmdLineSwitch根据参数打开/关闭此功能,但这仍然需要我重新启动应用程序才能从 D2D 更改为 GDI+,反之亦然。

奇怪的是,FPS 计数器(在我的例子中来自 FRAPS)表明 UI 中仍在发生事件(因为值会按预期发生变化),但 UI 本身并没有明显令人耳目一新。

这是与 Direct2D 相关的问题,还是 Firemonkey 实现的错误?更重要的是,有没有比禁用 D2D 更好的修复方法?最后,同样相关的是,是否可以在不先终止应用程序的情况下“重新初始化”应用程序(所以也许我可以允许用户在 GDI+ 和 D2D 之间切换而无需重新启动应用程序)?

最佳答案

这可能是更新 4 修补程序 - 26664/QC 104210 之前的 FM 问题
修复了用户解锁后 FireMonkey HD 表单无响应的问题 - 安装它可能会为您解决问题。

更新应该是您从 EDN 下载的注册用户的一部分(直接链接 http://cc.embarcadero.com/item/28881)。

关于delphi - FMX Direct 2D 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739096/

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