You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何注册支持可变输入数量的Direct2D自定义效果?

解决Direct2D自定义效果可变输入数量的XML注册问题

要实现类似Composite Effect的可变输入功能,你不能完全省略<Input>节点,而是需要通过配置输入数量范围+保留单个输入模板的方式实现,具体修改如下:

核心修改要点

  1. 设置输入数量范围:在<Effect>根元素内部添加<minInputCount>和<maxInputCount>子元素,指定允许的输入数量区间:
    • <minInputCount>:设置最少需要的输入数量(比如Composite Effect要求至少2个输入,就设为2)
    • <maxInputCount>:设置最多允许的输入数量,设为0表示无上限
  2. 保留输入模板:必须至少定义一个<Input>节点作为模板,Direct2D会根据输入数量范围自动扩展输入实例。

示例修改后的XML

<Effect>
  <Property name="DisplayName" type="string" value="My Custom Variable Input Effect"/>
  <Property name="Author" type="string" value="Your Name"/>
  <!-- 配置可变输入范围:最少2个输入,无上限 -->
  <minInputCount>2</minInputCount>
  <maxInputCount>0</maxInputCount>
  <!-- 输入模板,索引从0开始 -->
  <Input name="Source" index="0"/>
</Effect>

额外注意事项

  • 你的效果实现类(继承ID2D1EffectImpl)需要重写GetInputCount方法,返回当前实际的输入数量;
  • 在Process方法中,要遍历所有输入纹理进行处理,确保逻辑支持多输入的情况。

之前省略所有<Input>节点导致E_INVALIDARG,是因为Direct2D无法识别该效果的输入结构,必须保留至少一个输入模板来定义输入的基本属性。

内容的提问来源于stack exchange,提问作者Nan_o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:55:13