【发布时间】:2010-09-08 13:22:50
【问题描述】:
我们有一个两屏 DirectX 应用程序,之前使用 NVIDIA 8400GS (256MB) 以一致的 60 FPS(显示器同步速率)运行。但是,当我们将显卡换成 512 MB RAM 时,帧速率很难达到 40 FPS 以上。 (它之所以这么高,是因为我们使用了三重缓冲。)这两张卡来自同一制造商 (PNY)。所有其他条件都相同,这是一个 Windows XP Embedded 应用程序,我们从每张卡的新图像开始。驱动版本号为169.21。
应用程序都是 2D 的。 IE。只是一堆纹理四边形和一大堆预渲染图形(因此需要升级卡的内存)。我们还拥有 CPU 动态解码的压缩动画 - 这涉及纹理锁定。锁定需要永远,但我也尝试使用单独的系统内存纹理供 CPU 更新,然后使用设备的 UpdateTexture 方法更新渲染的纹理。性能上没有总体差异。
尽管我已经阅读了 Internet 上所有关于 DirectX 性能的常见问题解答,但这仍然是我第一次从事 DirectX 项目,因此您所掌握的任何晦涩的知识都会很有用。 :)
在我谈到这个主题时还有一件事;在交换链上调用 Present 时,无论我在当前参数 (PresentationInterval) 和调用本身的标志中都使用 D3DPRESENT_DONOTWAIT 的事实,DirectX 似乎都在等待当前完成。因为这是一个双屏应用程序,所以这是一个问题,因为两个监视器似乎没有同步锁定,我正在通过线程池运行 Present 调用来解决它。造成这种情况的根本原因可能是什么?
【问题讨论】:
-
你可能被骗买了只有 8 个着色器单元而不是 16 个的 65nm "rev. 2" 版本。也就是说,如果您可以拥有 4x 的 GT610,为什么还要使用 8400GS内存和 DDR3 而不是 DDR2,以及相同价格的 4 倍着色器单元数量? (另外,它的 TDP 仅为 29W vs 40W)