IDirect3DDevice9Ex::ComposeRects 方法 (d3d9.h)

在另一个图面上使用字形字母表将文本字符串复制到一个图面。 合成由 GPU 使用按位运算完成。

语法

HRESULT ComposeRects(
  [in] IDirect3DSurface9      *pSrc,
  [in] IDirect3DSurface9      *pDst,
  [in] IDirect3DVertexBuffer9 *pSrcRectDescs,
  [in] UINT                   NumRects,
  [in] IDirect3DVertexBuffer9 *pDstRectDescs,
  [in] D3DCOMPOSERECTSOP      Operation,
  [in] int                    Xoffset,
  [in] int                    Yoffset
);

参数

[in] pSrc

类型: IDirect3DSurface9*

指向源图面 (由提供字母字形的 IDirect3DSurface9) 准备的指针。 必须使用 D3DUSAGE_TEXTAPI 标志创建此图面。

[in] pDst

类型: IDirect3DSurface9*

指向目标图面的指针 (接收字形数据的 IDirect3DSurface9) 准备。 表面必须是纹理的一部分。

[in] pSrcRectDescs

类型: IDirect3DVertexBuffer9*

指向顶点缓冲区的指针 (请参阅包含矩形的 IDirect3DVertexBuffer9) (请参阅将所需字形括在源图面中的 D3DCOMPOSERECTDESC) 。

[in] NumRects

类型: UINT

在操作中使用的矩形或字形的数量。 该数字适用于源图面和目标图面。 范围为 0 到 D3DCOMPOSERECTS_MAXNUMRECTS

[in] pDstRectDescs

类型: IDirect3DVertexBuffer9*

指向顶点缓冲区的指针 (请参阅包含矩形的 IDirect3DVertexBuffer9) (请参阅描述源图面中指定字形将复制到的目标的 D3DCOMPOSERECTDESTINATION) 。

[in] Operation

类型: D3DCOMPOSERECTSOP

指定如何合并源图面和目标图面。 请参阅 D3DCOMPOSERECTSOP

[in] Xoffset

类型: INT

添加到所有目标矩形的 x 坐标的值。 此值可以为负值,如果结果超出图面边界,则可能会导致字形被拒绝或被剪裁。

[in] Yoffset

类型: INT

添加到所有目标矩形的 y 坐标的值。 此值可以为负值,如果结果超出图面边界,则可能会导致字形被拒绝或被剪裁。

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。

备注

使用此方法,将来自一位源图面的字形组合到另一个一位纹理图面中。 然后,可以将目标图面用作正常纹理操作的源,该操作将筛选文本字符串并将其缩放到其他一些非单色图面上。

此方法有几个约束 (类似于 StretchRect) :

  • 无法锁定图面。
  • 源图面和目标图面不能是相同的图面。
  • 必须使用 D3DFMT_A1 格式创建源图面和目标图面。
  • 必须使用 D3DPOOL_DEFAULT 标志创建源图面和两个顶点缓冲区。
  • 必须使用 D3DPOOL_DEFAULTD3DPOOL_SYSTEMMEM 标志创建目标图面。
  • 源矩形必须位于源图面内。
方法不会记录在状态块中。

要求

   
目标平台 Windows
标头 d3d9.h
Library D3D9.lib

请参阅

IDirect3DDevice9Ex