繁体   English   中英

在不使用DirectX(d3dx9_43.dll)的情况下将表面保存到文件

[英]Save surface to file without DirectX(d3dx9_43.dll)

我制作了一个需要截图的程序,我使用GetFrontBufferDataD3DXSaveSurfaceToFile 但是现在我正面临麻烦。 D3DXSaveSurfaceToFile使用d3dx9_43.dll,该文件无法进行静态链接,并且在没有DirectX的PC上程序无法运行。 如何仅使用D3D节省表面?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM