Введение

Старый API DirectDraw API DirectX от Microsoft (ddraw.dll) — это API, который ранее входил в состав API DirectX от Microsoft. DirectDraw используется для ускорения рендеринга 2D-графики в приложениях. DirectDraw также позволяет приложениям запускаться в полноэкранном режиме или встраиваться в окно, как и большинство других приложений MS Windows. DirectDraw использует аппаратное ускорение, если оно доступно на компьютере пользователя. DirectDraw обеспечивает прямой доступ к видеопамяти, аппаратному наложению, аппаратному ускорителю блочной передачи и перевороту страниц. Его менеджер видеопамяти может легко управлять видеопамятью, полностью используя возможности быстрого копирования и цветовой декомпрессии различных типов видеоадаптеров. DirectDraw — это 2D API, то есть он содержит команды для 2D-рендеринга и не поддерживает 3D-аппаратное ускорение. Программист может использовать DirectDraw для отрисовки 3D-графики, но рендеринг будет выполняться медленнее, чем при использовании API, такого как Direct3D, который поддерживает 3D-аппаратное ускорение. DirectDraw был представлен для Windows Mobile в Windows Mobile 5.0, заменив графический компонент GAPI, который впоследствии был устаревшим. С выпуском DirectX версии 8.0, DirectDraw был объединен в новый пакет под названием DirectX Graphics, который расширил Direct3D несколькими дополнениями API DirectDraw. Программисты все еще могут использовать DirectDraw, но им необходимо использовать более старые интерфейсы DirectX (DirectX 7 и ниже). В июне 2010 года DirectDraw был удален из пакета DirectX SDK, но в 2012 году DirectX SDK был объединен с Windows Platform SDK, и DirectDraw был включен повторно.

Замена

Ухудшилась совместимость Windows со старыми играми, использующими DirectDraw, среди которых Command & Conquer, Warcraft 2 и Theme Hospital. В новых версиях Windows некоторые игры отказываются запускаться при 32-битной глубине цвета (например, Dangerous Waters), другие показывают черный экран или отображают графические артефакты при переключении. Перереализация DirectDraw позволяет решить эти проблемы совместимости. Наиболее распространенные замены включают: WineD3D от Wine, который преобразует вызовы в OpenGL. cnc ddraw и ts ddraw от CnCNet, многопользовательской сети для Command & Conquer, преобразуют вызовы в GDI, OpenGL (с поддержкой GLSL) или Direct3D 9. DDrawCompat – это обертка для оригинального ddraw, исправляющая проблемные вызовы. ddwrapper – более ранняя, независимая обертка, выполняющая ту же функцию.