Устройство SlimDX. Сброс отказывает с “D3DERR_INVALIDCALL: Недопустимый вызов (-2005530516)” ошибка

Мы недавно обновили от VS 2005 кому: VS 2008 (Windows XP). Мы используем SlimDx в одном из наших проектов. Все работало хорошо после обновления, кроме моего Восстанавливать функцию, к которой обращаются сброс devicelost/device, который отказывает с

D3DERR_INVALIDCALL: Недопустимый вызов (-2005530516)

Я использую Ctrl-Alt-Del и затем Escape для моделирования потерянного устройства.

void Recover()
{
  try
     {
         if (res.Code == D3DERR_DEVICENOTRESET)
         { 
           res = m_device.Reset(m_presentParams); //Crashes on this.
           if (res.IsSuccess)
           {
             m_deviceLost = false; 
            }
          }
     }
   catch(Exception e)
   {}
 }

Это что-то, чтобы сделать с VS 2008, поскольку это раньше работало приятно с VS 2005?

5
задан jezrael 17 July 2015 в 22:04
поделиться

1 ответ

Я нашел полезную информацию в этом сообщении на форуме . Обратите внимание на вопрос на этом форуме, связанный с VB, но это все еще хорошая информация. Полный кредит Саймону О'Коннору .

Немного переформатировано и отредактировано.

INVALIDCALL обычно означает, что либо параметр, который вы передали в D3D, недействителен, либо запрошенная вами операция невозможна.

Самый простой способ выяснить, почему вызов D3D возвратил ошибку INVALIDCALL, - это сообщить вам:

  1. Убедитесь, что установлена ​​версия DEBUG среды выполнения D3D (вам была предоставлена ​​возможность, когда вы установил SDK).
  2. Убедитесь, что версия среды выполнения DEBUG включена. Перейдите к апплету DirectX в Панели управления и посмотрите вкладку Direct3D.
  3. В апплете панели управления DirectX увеличьте выходной уровень отладки для Direct3D до максимума. Я не использовал Visual BASIC более 10 лет, поэтому я забыл, какая поддержка отладки доступна, и я не установил ее на этом компьютере, чтобы проверить ... Если VB ДЕЙСТВИТЕЛЬНО имеет окно вывода отладки:
  4. Выполнить ваша программа и дайте ей выйти из строя с ошибкой INVALIDCALL.
  5. Теперь посмотрите на весь текст в окне вывода отладки. D3D будет регистрировать информацию, предупреждения и, что важно, ошибки. Это также объяснит причину, ПОЧЕМУ вызов D3D не удался.

Если VB не имеет простого окна вывода отладки, загрузите и запустите DebugView с http://www.sysinternals.com или используйте средство просмотра отладки командной строки, которое поставляется с DirectX SDK

]
8
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: