IWICDdsFrameDecode::CopyBlocks 方法 (wincodec.h)
请求像素数据,因为它以本机方式存储在 DDS 文件中。
语法
HRESULT CopyBlocks(
[in] const WICRect *prcBoundsInBlocks,
[in] UINT cbStride,
[in] UINT cbBufferSize,
[out] BYTE *pbBuffer
);
参数
[in] prcBoundsInBlocks
类型: const WICRect*
要从源复制的矩形。 NULL 值指定整个纹理。
如果纹理使用块压缩 DXGI_FORMAT,则矩形的所有值都以块数(而不是像素)表示。
[in] cbStride
类型: UINT
目标缓冲区的步幅(以字节为单位)。 这表示从缓冲区指针到下一行数据的字节数。 如果纹理使用块压缩 DXGI_FORMAT,则“数据行”定义为包含多个像素扫描线的块行。
[in] cbBufferSize
类型: UINT
目标缓冲区的大小(以字节为单位)。
[out] pbBuffer
类型: BYTE*
指向目标缓冲区的指针。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
如果纹理不使用块压缩 DXGI_FORMAT,则此方法的行为类似于 IWICBitmapSource::CopyPixels。 但是,它不执行任何像素格式转换,而是从 DDS 文件生成原始数据。
如果纹理使用块压缩 DXGI_FORMAT,此方法会将块数据直接复制到提供的缓冲区中。 在这种情况下, prcBoundsInBlocks 参数以块而不是像素定义。 若要确定是否是这种情况,请调用 GetFormatInfo 并读取返回的 WICDdsFormatInfo 结构的 DxgiFormat 成员。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8.1 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | wincodec.h |
Library | Windowscodecs.lib |
DLL | Windowscodecs.dll |