Перевод статьи twickline, опубликованной в блоге http://wine-review.blogspot.com/2007/11/directx-90c-on-linux-with-wine.html.
Статья рассказывает об установке DirectX9.0c в wine. Возможно кому-нибудь будет интересно.
Замечания и предложения приветствуются.
ЗЫ Простите за мой английский... и за русский тоже :)
Microsoft DirectX это коллекция API для выполнения задач, связанных с мультимедиа, особенно программирования игр и видео на платформе Microsoft. Названия этих API начинается со слова Direct. Например: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound и так далее. DirectX это общий термин, обозначающий все эти Directчтонибудь API. И этот термин дал название коллекции. За прошедшие годы многие API были изменены и перемещены, так что это соглашение о наименовании больше не действительно. К примеру X заменил Direct в первых частях названий некоторых новых DirectX технологий, таких как XAct, Xinput и т. д.
Direct3D (графический API в составе DirectX) широко используется в разработке компьютерных игр для Microsoft Windows, Microsoft Xbox и Microsoft Xbox 360. Direct3D так-же используется другими приложениями для визуализации и обработки графики, что особенно заметно в инженерных приложениях CAD/CAM, потому что они способны быстро обрабатывать высококачественную 3D графику, используя DirectX-совместимое аппаратное обеспечение. Так как Direct3D это широкоизвестный API в составе DirectX, нередко название DirectX используется вместо Direct3D.
Действия производились с чистой конфигурационной директорией Wine на виртуальном рабочем столе 1024x768
$ winecfg
Как только директория .wine будет создана, запуститься конфигурационная утилита, в которой вы сможете установить параметры виртуального рабочего стола на вкладке Видео. Так-же хорошей идеей будет выбрать Ваш аудио драйвер на вкладке Аудио.
Следующий шаг это установка родной mscoree.dll и streamci.dll в директорию /system32
из установленной Windows.
Перейдите в ~/.wine/drive_c/windows/system32 и переименуйте d3d8, d3d9, ddraw, dsound, dsound.vxd, quartz dlls в *.bak.
Вам будет необходимо поставить большое количество dll, для корректной работы инсталлятора. Ниже приведен полный список dll, которые должны быть установлены.
"d3d8"="nat ive" "d3d9"="native" "d3dim"="native" "d3drm"="native" "d3dx8"="native" "d3dxof"="native" "dciman32"="native" "ddrawex"="native" "devenum"="native" "dinput"="native" "dinput8"="native" "dmband"="native" "dmcompos"="native" "dmime"="native" "dmloader"="native" "dmscript"="native" "dmstyle"="native" "dmsynth"="native" "dmusic"="native" "dplay"="native" "dplayx"="native" "dpnaddr"="native" "dpnet"="native" "dpnhpast"="native" "dswave"="native" "dxdiagn"="native" "mscoree"="native" "quartz"="native" "streamci"="native"
Скачайте DirectX 9.0c November release.
directx_nov2007_redist.exe Извлечет файлы инсталлятора в выбранную Вами директорию.
tom@tuxonfire ~ $ wine directx_nov2007_redist.exe fixme:advapi:DecryptFileA "z:\\home\\tom\\directx-9\\" 00000000 fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported. tom@tuxonfire ~ $
Теперь перейдите в директорию, в которую Вы распаковали DirectX и запустите DXSETUP.EXE.
tom@tuxonfire ~ $ cd /home/tom/directx-9 tom@tuxonfire ~/directx-9 $ wine DXSETUP.EXE fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported.
Запустите winecfg снова и установите d3d8, d3d9, ddrawex, dinut, dinput8 как встроенные wine.
Теперь запустите dxdiag.exe
tom@tuxonfire ~/directx-9 $ cd /home/tom/.wine/drive_c/windows/system32 tom@tuxonfire ~/.wine/drive_c/windows/system32 $ wine dxdiag.exe fixme:ole:CoInitializeSecurity ((nil),-1,(nil),(nil),1,3,(nil),0,(nil)) - stub!
Теперь мы можем протестировать ddraw, ddraw 3D, D3D8 и D3D9
После удачного тестирования необходимо установить gm.dls для теста Direct Music, этот драйвер поместите в ~/.wine/drive_c/windows/system32/drivers
Вы получите уведомление в system32 d3dx9_24.dll до d3dx9_36.dll установлены, это поможет Вам при запуске игр, которые требуют дополнительных библиотек DirectX.
Теперь Вы имеете возможность запускать многие библиотеки DirectX в режиме native или builtin. К примеру, если игра падает со встроенной библиотекой Wine quartz.dll, Вы можете попробовать запустить ее с оригинальной Windows dll и посмотреть как это улучшит ситуацию.
Не забывайте, что d3d8, d3d9, ddraw будут работать толька как builtin, и во многих случаях Вы должны будете попробовать использовать встроенные dsound и dinput. Кстати, у меня были некоторые успешные попытки запуска (dsound and dinput) в оригинальном режиме Windows... Причина для использования встроенных библиотек это необходимость прямого доступа к Вашему железу. direct music и direct play могут быть использованы в native windows mode в большинстве случаев.