D1159: Ungültige Commandlist-Topologie
Eine Befehlsliste kann nicht auf Effekte verweisen, die Teil von Effektdiagrammen sind, die die Befehlsliste nutzen.
Mögliche Ursachen
Beim Auffüllen einer Befehlsliste kann eine Anwendung einen Aufruf von ID2D1DeviceContext::D rawImage enthalten. ID2D1DeviceContext::D rawImage kann zum Zeichnen von Bitmaps, Effekten oder Befehlslisten verwendet werden. Daher ist es syntaktisch möglich, dass ein ID2D1DeviceContext::D rawImage-Aufruf versucht, eine Befehlsliste zu zeichnen, während dieselbe Befehlsliste als Ziel festgelegt ist. Selbstverweisende Befehlslisten auf diese Weise sind jedoch ungültig. Direct2D identifiziert Fälle, in denen dies auftritt, und meldet einen Fehler, und die Debugebene gibt diese Meldung aus.
Mögliche Fehlerbehebungen
Stellen Sie beim Auffüllen einer Befehlsliste sicher, dass ein Gerätekontext keinen Vorgang ausgibt, der dieselbe Befehlsliste nutzt. Die offensichtlichste Möglichkeit besteht darin, ID2D1DeviceContext::D rawImage mit derselben Befehlsliste aufzurufen, die als Ziel festgelegt ist. Es gibt jedoch auch weniger offensichtliche Möglichkeiten, wie dies auftreten kann: Ein ID2D1DeviceContext::D rawImage kann auf ein Effektdiagramm verweisen, und ein Knoten im Effektdiagramm versucht möglicherweise, die Zielbefehlsliste zu nutzen. Stellen Sie sicher, dass befehlslisten vor der Verwendung ordnungsgemäß aufgefüllt werden und dass Aufrufe von ID2D1DeviceContext::SetTarget auf das beabsichtigte Ziel verweisen.