D1159:命令列表拓扑无效
命令列表不能引用属于使用命令列表的效果图的一部分的效果。
可能的原因
填充命令列表时,应用程序可能包括对 ID2D1DeviceContext::D rawImage 的调用。 ID2D1DeviceContext::D rawImage 可用于绘制位图、效果或命令列表。 因此,ID2D1DeviceContext::D rawImage 调用在语法上可以尝试绘制命令列表,同时将相同的命令列表设置为目标。 但是,以这种方式的自引用命令列表无效。 Direct2D 将识别发生这种情况并报告错误的情况,调试层将输出此消息。
可能的修复方法
填充命令列表时,请确保设备上下文不会发出使用相同命令列表的任何操作。 发生这种情况的最明显方法是使用设置为目标的相同命令列表调用 ID2D1DeviceContext::D rawImage。 但是,也有一些不太明显的方式来发生这种情况:ID2D1DeviceContext::D rawImage 可能引用效果图,效果图中的一个节点可能会尝试使用目标命令列表。 确保在使用前正确填充命令列表,并且对 ID2D1DeviceContext::SetTarget 的调用引用目标。