В настоящее время я работаю над внешним плагином в Unity3d, который использует NVAPI & 3D Vision. В NVAPI есть два вызова API для включения / выключения активной стереосистемы.
NvAPI_Stereo_Deactivate
NvAPI_Stereo_Activate
Поэтому, когда я пытаюсь включить / выключить стерео, он вылетает в случайное время со следующим исключением:
Unity Player [версия: Unity 2017.1.0f3 (472613c02cf7)] nvwgf2umx.dll вызвал нарушение прав доступа (0xc0000005) в модуле nvwgf2umx.dll в 0033: 6f9981d8.
Авария может произойти с третьей попытки или с какой-либо попытки позже иногда. В настоящее время я предполагаю, что он должен что-то делать с некоторым значением, доступным для DLL. Проблема в том, что его NVIDIA внутренняя у меня нет доступа к нему.
Я уже пробовал другие простые методы, такие как отключение Vsync, изменение параметров качества на максимум в настройках управления 3d, но все они не удаются.
Я наткнулся на симилера вопрос в форумах разработчиков NVDIA, но нет ответа на это, кажется. Любые предложения или помощь по этому поводу будет принята с благодарностью.
Также здесь есть ссылка на журнал ошибок
Мне удалось решить эту проблему, используя обходной путь. Вместо того, чтобы использовать
NvAPI_Stereo_Deactivate
NvAPI_Stereo_Activate
функции для включения & от 3D-видения Я передаю текстуру рендеринга на моно глаз в NvAPI_Stereo_SetActiveEye на моно камеру, а в активном режиме я передаю ее левому глазу & Правый глаз соответственно. Переключение, кажется, работает должным образом, хотя я также отметил использование NvAPI_Stereo_IsActivated
в цикле, кажется, вызывает то же самое нарушение доступа, так что только пользователь NvAPI_Stereo_SetActiveEye
функция, чтобы установить глаз и не возиться с нативными функциями NVAPI. Недостатком использования этого является то, что 3d-излучатель будет сохраняться на выходе приложения (для моего проекта это нормально). Надеюсь, что это поможет любому в будущем столкнуться с этой проблемой. Обновите ответ, если у кого-то есть лучшее решение. Это было бы чудесно.
Других решений пока нет …