我可以使用gdi + image作为directx9纹理而无需复制开销

时间:2012-11-23 11:03:04

标签: directx gdi+ directx-9

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

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

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

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

其中一个:

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

    1. 锁定图像位
    2. 锁定表面位
    3. 复制位
    4. 顺便说一句D3DXCreateTextureFromFileInMemory很慢。

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

0 个答案:

没有答案