29 апреля 2010 г.

DirectX в VirtualBox (linux)

Заметка о том, как позаиметь почти полноценный DirectX под виртуальной машиной. В моём случае это VirtualBox под linux, в машине - WindowsXP.

VirtualBox - клёвая виртуалка, удобная. Автоподгонка разрешения гостевой системы под размер окна в реальном времени, интеграция мыши без захвата, буфер обмена туда-сюда, возможность захватить usb-устройства (я, например, коннекчу винмобайл-девайс через ActiveSync, правда, при попытке прошить запорол устройство, но это другая история).

Писать про настройку VirtualBox не буду - это всё банальности, кому надо было - уже разобрался, кому надо будет - разберётся.

Прежде всего надо включить 3D в настройке гостевой системы ( Настройка машины -> Дисплей -> Включить 3D ). Кстати, в новой версии (начиная с 3.1), появилось ещё ускорение 2D для видео, работает даже, вот оно как!

Загружаем гостевую систему, запускаем dxdiag и глядим что там.
Всякий там DirectDraw работает преотлично, 2D игры летают, но с 3D сразу не заладилось как-то.

Ещё, разумеется, надо сразу же поставить в гостевой системе VirtualBox Guest Additions (а после каждого обновления виртуалки иногда надо бы переставить). Если кто не знает - это всякие дрова, для мыши, видео итд, то есть то что позволяет гостевой ОС теснее интегрироваться с хостовой. Для этого надо примонтировать iso который идёт с vbox-ом (и чаше всего он сразу подмонтирован) и установить из гостевого cd-rom обновку.

Даже с этими дополнениями и дровами 3D всё равно не работает. Помочь нам может проект WINE. У них имеется wined3d - костыль для Direct3D. Есть готовый бинарник; ясно понятно, что он под винду. На данный момент версия проекта 1.1.38.
Сайт проекта: http://savannah.nongnu.org/projects/wined3d
Последняя сборка лежит по (фиксированной) ссылке (одной из): http://ftp.twaren.net/Unix/NonGNU/wined3d/latest/wined3d.exe


Устанавливаем, понимаем что надо перезагрузиться в селфмоде (сам предложит), как обычно (в WinXP, например, дрючим F8 при загрузке), запускаем инстальник, читаем GNU GPL, ставим. Перезагружаемся. Запускаем dxdiag, видим активные кнопки, тыкаем на тесты, смотрим на кубики крутящиеся, радуемся:
Результаты проверки Direct3D 8: Все проверки завершились успешно.
Результаты проверки Direct3D 9: Все проверки завершились успешно.


В один из опытов пробовал поставить экспериментальные поддержки версий 7 и 10, перестало вообще работать, даже dxdiag не грузился, выпадал в стектрейс сразу. Удаления не предусмотрено ни в стандартном directx ни в виневском, пришлось конкретно и долго париться удаляя и переставляя directx. Так что смотрите сами.

Итого. Запущена поддержка Direct3D в гостевой винде под виртуалкой в линуксе. Скорость работы по большей части далеко не нативная, но по крайней мере можно запускать что-либо требующее для запуска обязательной поддержки. Запустил 3DMark соответствующие dx8 и dx9, вот 2001:

1 комментарий:

  1. в тесте dxdiag кубик вращается НО на нем нету рисунка. тоже самое с играми, они запускаются но черный экран. Что делать?

    ОтветитьУдалить