MFCreateDXSurfaceBuffer 函数 (mfapi.h)

创建管理 Direct3D 9 图面的媒体缓冲区对象。

语法

HRESULT MFCreateDXSurfaceBuffer(
  [in]  REFIID         riid,
  [in]  IUnknown       *punkSurface,
  [in]  BOOL           fBottomUpWhenLinear,
  [out] IMFMediaBuffer **ppBuffer
);

参数

[in] riid

标识 Direct3D 9 图面的类型。 目前,此值必须 IID_IDirect3DSurface9。

[in] punkSurface

指向 DirectX 图面的 IUnknown 接口的指针。

[in] fBottomUpWhenLinear

如果 为 TRUE,则缓冲区的 IMF2DBuffer::ContiguousCopyTo 方法会将缓冲区复制到自下而上的格式。 对于未压缩的 RGB 图像,自下而上格式与 GDI 兼容。 如果此参数为 FALSE, 则 ContiguousCopyTo 方法会将缓冲区复制到与 DirectX 兼容的自上而下格式。

有关自上而下与自下而上图像的详细信息,请参阅 图像步幅。

[out] ppBuffer

接收指向 IMFMediaBuffer 接口的指针。 调用方必须释放缓冲区。

返回值

函数返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
无效的参数。

备注

此函数创建一个媒体缓冲区对象,该对象保存指向 punkSurface 中指定的 Direct3D 图面的指针。 通过锁定缓冲区,调用方可以访问 Surface 内存。 当缓冲区对象被销毁时,它会释放表面。 有关媒体缓冲区的详细信息,请参阅 媒体缓冲区。

注意 此函数不分配 Direct3D 表面本身。
 
此函数创建的缓冲区对象还公开 IMF2DBuffer 接口。 有关详细信息,请参阅 DirectX Surface 缓冲区。

此函数不支持 DXGI 图面。

要求

要求 值
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 mfapi.h
Library Evr.lib
DLL Evr.dll

另请参阅

DirectX Surface 缓冲区

媒体缓冲区

媒体基础函数