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

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

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

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

1

Решение

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

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

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

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

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

5

Другие решения


По вопросам рекламы [email protected]