0

我有一个 jpeg 图片流(25fps,约 1000x700),我想以尽可能少的 CPU 使用率将其渲染到屏幕上。

到目前为止,我发现了一种解压缩 jpeg 图像的快速方法——它是一个 gdi+ api。在我的机器上,每帧大约需要 50ns。我不知道他们是如何做到的,但这是真的,例如 libjpeg8 比记忆中的要慢得多。

我尝试使用 gdi+ 来输出拉伸的图片,但对于这样一个简单的工作,它使用了很多 CPU。所以我切换到directx9。这对我有好处,但是我找不到将gdi+图片转换为directx9纹理的好方法。

有很多方法可以做到这一点,所有这些方法都很慢并且 CPU 使用率很高。

其中之一:

  1. 从纹理中获取表面
  2. 从表面获取 hdc
  3. 从 hdc 创建 gdi+ 图形
  4. 不拉伸绘制(平面 API 的 DrawI)。

另一种方式:

  1. 锁定图像位
  2. 锁定表面位
  3. 复制位

顺便说一句D3DXCreateTextureFromFileInMemory很慢。

问题是如何在没有复制开销的情况下使用图像作为纹理?或者将图像转换为纹理的最佳方法是什么?

4

0 回答 0