我有一个 jpeg 图片流(25fps,约 1000x700),我想以尽可能少的 CPU 使用率将其渲染到屏幕上。
到目前为止,我发现了一种解压缩 jpeg 图像的快速方法——它是一个 gdi+ api。在我的机器上,每帧大约需要 50ns。我不知道他们是如何做到的,但这是真的,例如 libjpeg8 比记忆中的要慢得多。
我尝试使用 gdi+ 来输出拉伸的图片,但对于这样一个简单的工作,它使用了很多 CPU。所以我切换到directx9。这对我有好处,但是我找不到将gdi+图片转换为directx9纹理的好方法。
有很多方法可以做到这一点,所有这些方法都很慢并且 CPU 使用率很高。
其中之一:
- 从纹理中获取表面
- 从表面获取 hdc
- 从 hdc 创建 gdi+ 图形
- 不拉伸绘制(平面 API 的 DrawI)。
另一种方式:
- 锁定图像位
- 锁定表面位
- 复制位
顺便说一句D3DXCreateTextureFromFileInMemory
很慢。
问题是如何在没有复制开销的情况下使用图像作为纹理?或者将图像转换为纹理的最佳方法是什么?