Мы недавно обновили от 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
?
Я нашел полезную информацию в этом сообщении на форуме . Обратите внимание на вопрос на этом форуме, связанный с VB, но это все еще хорошая информация. Полный кредит Саймону О'Коннору .
Немного переформатировано и отредактировано.
]INVALIDCALL обычно означает, что либо параметр, который вы передали в D3D, недействителен, либо запрошенная вами операция невозможна.
Самый простой способ выяснить, почему вызов D3D возвратил ошибку INVALIDCALL, - это сообщить вам:
- Убедитесь, что установлена версия DEBUG среды выполнения D3D (вам была предоставлена возможность, когда вы установил SDK).
- Убедитесь, что версия среды выполнения DEBUG включена. Перейдите к апплету DirectX в Панели управления и посмотрите вкладку Direct3D.
- В апплете панели управления DirectX увеличьте выходной уровень отладки для Direct3D до максимума. Я не использовал Visual BASIC более 10 лет, поэтому я забыл, какая поддержка отладки доступна, и я не установил ее на этом компьютере, чтобы проверить ... Если VB ДЕЙСТВИТЕЛЬНО имеет окно вывода отладки:
- Выполнить ваша программа и дайте ей выйти из строя с ошибкой INVALIDCALL.
- Теперь посмотрите на весь текст в окне вывода отладки. D3D будет регистрировать информацию, предупреждения и, что важно, ошибки. Это также объяснит причину, ПОЧЕМУ вызов D3D не удался.
Если VB не имеет простого окна вывода отладки, загрузите и запустите DebugView с http://www.sysinternals.com или используйте средство просмотра отладки командной строки, которое поставляется с DirectX SDK