Pull to refresh

Почти нативный Direct3D в VirtualBox

Reading time 3 min
Views 45K
Совсем недавно обновилась замечательная виртуальная машина с открытым исходным кодом от InnoTek/Sun/Oracle (нужное подчеркнуть) — среди прочих фишек в VirtualBox 3.0 была заявлена более или менее внятная поддержка DirectX 8/9 на уровне драйвера виртуального графического адаптера в гостевой Windows-машине. По хорошему, это должно было означать что сбылась мечта идиота геймера: можно гонять в любые win-игрушки не осуществляя рандомных подпрыгиваний с бубном и высушенной куриной лапкой. На деле все естественно оказалось не так просто, под катом предлагается микро-howto, позволяющее запускать в виртуальной машине DirectX-игрушки

UPD: Спасибо за карму, перенес в блог Linux для всех


Итак, что нам понадобится:

— Linux box
— VirtualBox 3.0
— WineD3D
— Дистрибутив Windows (эксперименты осуществлялись на XP SP2)
— Дистрибутив любимой виндовой игрушки (экзекуции производились над Myst V: End of Ages)

Процесс установки VBox особых затруднений вызвать не должен: качаем, запускаем из-под рута (su и sudo в помощь) бинарный установщик, например так:

root@localhost:[~]# wget dlc.sun.com/virtualbox/3.0.0/VirtualBox-3.0.0-49315-Linux_x86.run
root@localhost:[~]# ./VirtualBox-3.0.0-49315-Linux_x86.run


Если ничего нештатного не произошло и нас радостно оповестили об успешном окончании установки, то переходим к следующей части — то есть запуску VirtualBox и установке Windows в виртуальной машине.

Бывает так, что инсталлер не может корректно определить дистрибутив, в связи с чем начинает паниковать и отказывается собирать ядерный модуль. Впрочем, лечится это довольно просто:

root@localhost:[~]# cd /opt/VirtualBox/src
root@localhost:[/opt/VirtualBox/src]# ls
Makefile vboxdrv vboxnetadp vboxnetflt
root@localhost:[/opt/VirtualBox/src]# make


Далее, удостоверимся в том что ядерный модуль подгружен:

root@localhost:[/opt/VirtualBox/src]# lsmod |grep vboxdrv
vboxdrv 107720 0
root@localhost:[/opt/VirtualBox/src]#


Если нет, то:

root@localhost:[/opt/VirtualBox/src]# modprobe vboxdrv

ОК, будем считать что VBox у нас есть. Дальше все просто, создаем — виртуальную машинку, не забывая после создания зайти в «Свойства» и проставить галочки напротив «Включить IO APIC», и " Включить 3D-ускорение". Видеопамяти выделяем не меньше 32 мегабайт, после чего подключаем образ или физический CD/DVD-драйв и ставим любимую сборку Windows.

После установки загружаемся и начинаем шаманить. На самом деле, на этом этапе у нас уже есть поддержка 3D-ускорения, но проблема в том, что ускорять драйвер может только OpenGL. Это можно легко проверить, запустив dxdiag.exe. Логично предположить, что если DirectX (9c например) отсутствует нужно его установить. То есть, на этапе когда мы начнем ставить Guest OS Addons, DirectX уже должен присутствовать в системе.

Далее собственно и выполняем установку Guest Addons — Устройства > Установить Дополнения Гостевой ОС. На провокационные вопросы мастера отвечаем «Все равно продолжить установку». Перезагружаемся.

Теперь необходимо установить WineD3D — набор DLL из дистрибутива wine, которые заменят нативные DLLки DirectX. Это нужно для того чтобы DirectX-запросы транслировались в OpenGL (так, как это и происходит, когда запускаем игрушки под вайном). Скачать можно тут — download.savannah.nongnu.org/releases/wined3d/latest/wined3d.exe

Единственное примечание касается того, что свежескачаный exe'шник нужно запускать в безопасном режиме, ради чего придется еще раз перезагрузиться.

Ну вот теперь можно пробовать ставить игрушки. На интегрированной интелловой графике Myst V безбожно тормозил и рисовал артефакты, но с увеличением количества виртуальной видеопамяти до 128 Мб ситуация заметно изменилась к лучшему. Других игрушек под рукой не оказалось, поэтому отписывайтесь об удачных и не очень попытках поиграть в ту или геймзу в VBox'е.

Итого: конечно не панацея, но уже что то… Ждем дальнейших улучшений драйвера.

PS. Не судите строго — это мой первый хабрапост
Tags:
Hubs:
+76
Comments 76
Comments Comments 76

Articles