VirtualBox vs. 3D

mafin
Оффлайн
Регистрация
29.03.17
Сообщения
47
Реакции
13
Репутация
48
В обсуждении одной из новостей о выходе очередной версии популярной виртуальной машины Sun VirtualBox был поднят вопрос о поддержке данным решением Direct3D - ссылка

И в самом деле - каждый последующий релиз указанной системы виртуализации непременно сопровождается списком изменений, в котором в обязательном порядке присутствует что-то вроде "Улучшена работа с 3D".

Заинтересовавшись этим вопросом я решил провести небольшое исследование, чтобы разобраться, как же обстоят дела с аппаратным ускорением обработки графики у моего любимого VirtualBox?

Итак запускаем виртуальную машину с установленной операционной системой (на момент проведения исследования под рукой оказалась только старушка ХР) и вызываем утилиту диагностики DirectX. Сделать это можно вызвав командную строку комбинацией Win+R и введя команду "dxdiag"^

Нас спросят желаем ли мы проверить наличие подписи Микрософт в драйверах:

Я на этот вопрос обычно отвечаю отрицательно, так как виртуальная машина служит для экспериментов и сохранение целостности драйверов совсем не является приоритетной задачей. Да и времени уйдет меньше.

После этого откроется основное окно с информацией о системе, в котором нужно выбрать закладку "Дисплей":

Что мы видим? Ускорение DirectDraw - недоступно; Direct3D - недоступно; ускорение AGP-текстурирования - недоступно. Если с AGP-текстурированием все понятно - наша видеокарта эмулируется, поэтому подобные сугубо железячные особенности работы интерфейсов недоступны. Да и прирост производительности от таких технологий давно не актуален.

Кроме того, обратите внимание на раздел видеодрайверов:

Нам доступен стандартный драйвер операционной системы. Он универсален и не поддерживает всех технологий, доступных специализированному драйверу.

Что же делать? Первый шаг - установка дополнений для гостевой системы. Об этом подробно написано в соответствующей статье - Установка и настройка Sun VirtualBox

Единственное, что хотелось бы еще раз подчеркнуть - не забудьте поставить галочку напротив поддержки 3D:

После установки дополнений и перезагрузки снова смотрим в dxdiag:

Уже лучше. Теперь в качестве драйвера значится драйвер ВиртуалБокса:

Однако ускорение Direct3D по прежнему остается недоступным... Как же так? Неужели нет никакого способа? Поиски решения привели меня сначала на форум VirtualBox, а потом на сайт, знакомый всем (ну или многим), кто как и я в свое время заинтересовался Линуксом, но полностью отказаться от программ под Виндовс не смог. Это , то есть широко известный WINE. Работая над обеспечением совместимости win32 программ в Линукс они конечно же достаточно много внимания уделяют компьютерным играм. Ведь очень часто именно отсутствие релизов игр под Линукс не позволяет людям переходить на свободную операционную систему. Результатом продолжительной работы стал выпуск своего заменителя для Direct3D - wined3d. Нашлась и ссылка на готовое решение (а то я уж было решил, что придется возиться с настройкой компилятора и собирать все из исходников):

Скачал инсталлятор прямиком в виртуальную машину и тут же запустил:

Не тут-то было - потребовал перезагрузки в безопасном режиме. Что ж, это дело не хитрое - жмем F8 во время запуска (так как перезагрузка происходит достаточно быстро рекомендую клацать F8 непрерывно, а то можно легко пропустить момент) и выбираем Безопасный режим:

Затем выбираем из списка нашу операционную систему:

Забавно, что выбирать приходится несмотря на то, что ОС - одна единственная.

Предупреждают, что некоторые из устройств могут быть недоступными и спрашивают, действительно ли мы хотим работать в безопасном режиме:

Конечно хотим - как же мы еще тут оказались.

Снова возвращаемся к wined3d.exe. На этот раз все запустилось и показало лицензионное соглашение (точнее ссылку на него):

В общем - обычная GNU LGPL.

После этого предлагают выбрать, какие библиотеки стандартных Direct3D заменить на свои:

При этом честно предупреждают, что Direct3D 10 и старые 7 и ниже являются экспериментальными. Ну не очень то и хотелось - для игр актуален Direct3D 9, а о десятом на Windows XP и говорить нечего. Впрочем, если есть настроение поэкспериментировать - воля ваша.

После установки потребуется перезагрузка. И не удивительно - все равно мы ведь находимся в безопасном режиме.

С замиранием сердца запускаем dxdiag:

Ура! Ускорение Direct3D - доступно. Жмем на кнопку теста и видим сообщение, что сейчас будет протестировано ускорение Direct3D версии 7:

Хм... Мы ведь его не устанавливали... Результат - ожидаем:

А что же дальше? Не смотря на первую ошибку тест продолжается:

И на этот раз я вижу привычный вращающийся кубик с эмблемой DirectX:

Непривычно видеть его в окне виртуальной машины.

Система диагностики спрашивает видел ли я кубик?

Ну конечно видел. Давайте быстрее, что там дальше:

Проверка Direct3D 9 проходит так же гладко и мы получаем известие о том, что тесты завершены:

Тесты - тестами, но как поведет себя виртуальная машина в реальном приложении? Для проверки я откопал среди дисков свои любимые гоночки: F1 Challenge 99-02 от Electronic Arts. Утилита настройки графики определила видеокарту неверно:

В то время, как у меня GeForce 8600 GT. Но я не уверен, что тут дело в виртуальной машине - все таки игра 2003 года и может просто не знать о существовании моей карты. Впрочем, уже хоть что-то. Запускаю исполняемый файл игры и...

Снова УРА! Ветер свистит в ушах, а голос инженера сообщает о том, что Жак Вильнёв выехал из боксов:

Так что я вам ответственно заявляю - ускорение 3D работает в VirtualBox!
 
Сверху Снизу