ID2D1DrawInfo::SetVertexProcessing 方法 (d2d1effectauthor.h)

设置顶点缓冲区、相应的顶点着色器以及用于控制 Direct2D 上下文如何处理顶点的选项。

语法

HRESULT SetVertexProcessing(
  [in, optional] ID2D1VertexBuffer            *vertexBuffer,
                 D2D1_VERTEX_OPTIONS          vertexOptions,
  [in, optional] const D2D1_BLEND_DESCRIPTION *blendDescription,
  [in, optional] const D2D1_VERTEX_RANGE      *vertexRange,
                 const GUID                   *vertexShader
);

参数

[in, optional] vertexBuffer

类型: ID2D1VertexBuffer*

顶点缓冲区,如果清除,将使用默认顶点着色器和映射到转换矩形。

vertexOptions

类型: D2D1_VERTEX_OPTIONS

影响呈现器与顶点着色器交互方式的选项。

[in, optional] blendDescription

类型: const D2D1_BLEND_DESCRIPTION*

顶点如何与输出纹理混合。

[in, optional] vertexRange

类型: const D2D1_VERTEX_RANGE*

要从缓冲区使用的顶点集。

vertexShader

类型: GUID*

顶点着色器的 GUID。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 如果失败,则返回 HRESULT 错误代码。

注解

在进行此调用之前,必须通过 ID2D1EffectContext::LoadVertexShader 方法加载通过顶点着色器 GUID 与顶点缓冲区关联的顶点着色器。

如果 传递顶点选项D2D1_VERTEX_OPTIONS_DO_NOT_CLEAR,则除非混合说明正好如此,否则方法将失败:

D2D1_BLEND_DESCRIPTION blendDesc = 
        {
            D2D1_BLEND_ONE,
            D2D1_BLEND_ZERO,
            D2D1_BLEND_OPERATION_ADD,

            D2D1_BLEND_ONE,
            D2D1_BLEND_ZERO,
            D2D1_BLEND_OPERATION_ADD,

            { 1.0f, 1.0f, 1.0f, 1.0f }
        };

如果此调用失败,则相应的 ID2D1Effect 实例将置于错误状态并无法绘制。

如果 blendDescription 为 NULL,则使用前台覆盖混合模式。

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1effectauthor.h
Library D2d1.lib

另请参阅

ID2D1DrawInfo

ID2D1EffectContext::CreateVertexBuffer

ID2D1EffectContext::LoadVertexShader