Действительно ли ошибка D2DERR_RECREATE_TARGET означает, что я должен отслеживать все, что создает моя цель рендеринга?

Я случайно получаю эту ошибку (D2DERR_RECREATE_TARGET) много раз в час, и после прочтения этой ошибки мне кажется, что я не могу ее избежать. Я использую SharpDX, который является "проектом с открытым исходным кодом, предоставляющим полный DirectX API на платформе.Net".

Согласно документации Microsoft: "Direct2D сообщает об утерянном устройстве, возвращая код ошибки D2DERR_RECREATE_TARGET из метода EndDraw. Если вы получили этот код ошибки, вы должны заново создать цель рендеринга и все зависящие от устройства ресурсы".

Означает ли это, что мне нужно отслеживать все зависящие от устройства ресурсы, которые создает моя цель рендеринга (их много!) И перестает использовать, или я ошибаюсь? Или, может быть, кто-то здесь знает способ обойти эту ошибку?

1 ответ

Объекты, созданные целью рендеринга с ошибкой D2DERR_RECREATE_TARGET, больше не могут использоваться для рисования.

Итак: да, вам нужно либо отслеживать нужные вам объекты и воссоздавать их, либо не использовать их.

Странно, что вы получаете ошибку очень часто. Возможно, ваш сложный рендеринг вызывает ошибку в видео драйвере или использует слишком много памяти.

Иногда ошибка может быть такой простой, как рисование за пределами растровых границ на конкретной видеокарте.

Включение уровней отладки D2D и D3D может помочь найти причину ошибки.

Другие вопросы по тегам