Я случайно получаю эту ошибку (D2DERR_RECREATE_TARGET) много раз в час, и после прочтения этой ошибки мне кажется, что я не могу ее избежать. Я использую SharpDX, который является «проектом с открытым исходным кодом, предоставляющим полный DirectX API на платформе .Net».
Согласно документации Microsoft: «Direct2D сообщает об утерянном устройстве, возвращая код ошибки D2DERR_RECREATE_TARGET из метода EndDraw. Если вы получили этот код ошибки, вы должны заново создать цель рендеринга и все ресурсы, зависящие от устройства».
Означает ли это, что мне нужно отслеживать все зависящие от устройства ресурсы, которые создает моя цель рендеринга (их много!) И перестает использовать, или я ошибаюсь? Или, может быть, кто-то здесь знает способ обойти эту ошибку?
Объекты, созданные целью рендеринга с ошибкой D2DERR_RECREATE_TARGET, больше не могут использоваться для рисования.
Итак: да, вам нужно либо отслеживать нужные вам объекты и воссоздавать их, либо не использовать их.
Странно, что вы получаете ошибку очень часто. Возможно, ваш сложный рендеринг вызывает ошибку в видео драйвере или использует слишком много памяти.
Иногда ошибка может быть такой же простой, как рисование за пределами растровых границ на конкретной видеокарте.
Включение D2D а также D3D Уровни отладки могут помочь найти причину ошибки.