Я пишу код, используя 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, чтобы сделать приложение более отзывчивым. Конечно, я использовал Dispatcher.Invoke, чтобы избежать проблем с потоками. Опять же, он отлично работает в XP.
Любая помощь очень ценится. Заранее спасибо.
1 ответ
Я думаю, что есть x64-версия slimdx.dll. Если вы используете x32-версию, это может быть проблемой.
Похожие вопросы
Новые вопросы
wpf
Windows Presentation Foundation, или WPF, является подсистемой для визуализации пользовательских интерфейсов в приложениях на основе Windows.