【问题标题】:Save surface to file without DirectX(d3dx9_43.dll)在没有 DirectX 的情况下将表面保存到文件(d3dx9_43.dll)
【发布时间】:2015-04-22 19:41:23
【问题描述】:

我制作了一个截图程序,我使用GetFrontBufferDataD3DXSaveSurfaceToFile。但现在我遇到了麻烦。D3DXSaveSurfaceToFile 使用 d3dx9_43.dll,无法静态链接,并且程序在没有 Directx 的情况下无法在 pc 上运行。如何仅使用 D3D 保存表面?

【问题讨论】:

标签: c++ directx screenshot direct3d


【解决方案1】:

GetFrontBufferData 为您提供指向IDirect3DSurface9 的指针。调用IDirect3DSurface9::GetDesc 将给你D3DSURFACE_DESC,描述图像数据。将其保存到文件中最重要的是 FormatWidthHeight 成员。然后,您可以拨打IDirect3DSurface9::LockRect获取实际数据。该函数的输出是D3DLOCKED_RECT,其中包含pBits 成员中的图像数据。请注意,图像数据可能不紧密,您必须考虑D3DLOCKED_RECTPitch 成员。然后,您可以使用任何静态可链接图像库(例如 DevIL)将图像写入磁盘,或滚动您自己的图像写入器(编写 BMP/TGA 非常容易)。

或者,您可以在目标计算机上安装适当的 DirectX 运行时,这可能会容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    相关资源
    最近更新 更多