Я пишу код, используя VS.Net 10 и SlimDX для рендеринга 3D-контента на D3DImage.Он отлично работает под 32-битной Windows XP.Однако после перехода на 64-битную Windows 7 (четырехъядерный процессор и 4 ГБ ОЗУ) тот же код больше не работает.Симптом заключается в том, что после рендеринга примерно 10 или 20 раз возникает событие IsFrontBufferAvailableChanged в D3DImage, а свойство IsFrontBufferAvailable имеет значение false.
Я проверил все, что могу придумать, например RenderCapability.Tier, вызвавSetBackBuffer, проверка устройства (фактически это тип DeviceEx) после потери переднего буфера, обновление драйвера видеокарты (nvidia 9500 GT 1G RAM) и т. Д. Ни одна из них не сработала.
Одна вещь, которая может помочьпроблема в том, что элемент управления изображением, который использует D3DImage в качестве источника, не создается в потоке GUI.Я делаю, чтобы уменьшить рабочую нагрузку потока GUI, чтобы сделать приложение более отзывчивым.Конечно, я использовал Dispatcher.Invoke, чтобы избежать проблем с многопоточностью.Опять же, он отлично работает в XP.
Любая помощь очень ценится.Заранее спасибо.