3

我有一个将多页 tiff 拆分为单页的函数,它使用 windows BitBlt 函数。在性能方面,显卡对分体有影响吗?是否值得使用直接的 C/C++ 库?

4

2 回答 2

2

如果 BitBlt 可以将页面映射到显存中,那么您的显卡很有可能会比 CPU 快得多。这有几个原因:

  • 该卡将与您的 CPU 并行运行,因此您可以在它运行时进行其他工作。
  • 显卡经过优化,可以自行执行内存复制,而不必让 CPU 将每个单词从一个地方复制到另一个地方。这可以释放你的 CPU 总线用于其他事情。
  • 视频卡可能具有较大的数据移动字长,并且如果您 blit 附加了任何操作标志,那么这些可能会被硬件优化。此外,大多数视频卡上的内存都比系统内存快。

请注意,这些事情并不总是正确的。例如,如果您的卡共享系统内存,那么它对内存的访问速度不会比 CPU 快。但是,您仍然可以获得并行支持。

最后,将图像传输到卡并返回的开销可能会超过您在卡上执行此操作所获得的速度提升。所以你只需要试验。

我应该补充一下 - 我相信您需要在设备上下文中指定内存在卡上。我不认为仅仅创建内存上下文对视频卡有任何特殊作用。

于 2009-06-12T18:48:02.503 回答
2

除非它是 BitBlt 的目标 HDC,否则视频卡不会参与任何活动。专用于成像功能的库应该更好地执行此任务,因为最终您会将这些写入磁盘。

如果您正在更改图像数据,那么使用您的视频卡可能会有所帮助;但前提是您要为目标 tiff 渲染大量新图像数据,尤其是 3D 场景等。

于 2009-06-12T18:58:48.407 回答