DirectDraw

{{Short description|Old API of Microsoft's DirectX API}}

{{more citations needed|date=January 2009}}

DirectDraw (ddraw.dll) is an API that used to be a part of Microsoft's DirectX API. DirectDraw is used to accelerate rendering of 2D graphics in applications. DirectDraw also allows applications to run fullscreen or embedded in a window such as most other MS Windows applications. DirectDraw uses hardware acceleration if it is available on the client's computer. DirectDraw allows direct access to video memory, hardware overlays, hardware blitters, and page flipping. Its video memory manager can manipulate video memory with ease, taking full advantage of the blitting and color decompression capabilities of different types of display adapters.

Because DirectDraw is a 2D API, it contains commands for 2D rendering and although it does not support 3D hardware acceleration, versions through to 7.0 of DirectDraw are tightly coupled to their respective version of Direct3D. In order to utilize 3D acceleration in Direct3D 7.0 and below, DirectDraw must be used in order to create an IDirect3D interface with the help of IDirectDraw7->QueryInterface, from which comes an IDirect3DDevice, and from there the remainder of the Direct3D API can be accessed and utilized. DirectDraw provides Textures (through Surfaces), Clippers, Palettes and Pixel Formats to Direct3D as well as the final presentation pass to display rendered images to the screen.

DirectDraw was introduced for Windows Mobile in Windows Mobile 5.0, replacing the graphics component of GAPI, which was then deprecated.{{cite web |last1=Saffitz |first1=Michael |title=Have you migrated to DirectDraw yet? |url=https://blogs.msdn.microsoft.com/windowsmobile/2007/08/13/have-you-migrated-to-directdraw-yet/ |website=Windows Mobile Team Blog |date=13 August 2007 |access-date=23 April 2019}}

With the release of DirectX version 8.0, DirectDraw was merged into a new package called DirectX Graphics, which extended Direct3D with a few DirectDraw API additions. DirectDraw can still be used by programmers, and it can be compiled in 64-bit, but they must use older DirectX interfaces (DirectX 7 and below).

Drivers from NVIDIA, AMD and Intel provide hardware accelerated support for many of DirectDraw's fundamental features. However, due to changes in Windows Desktop Manager (DWM) in recent Windows versions, features such as Overlays are no longer supported at all.

In June 2010, DirectDraw was removed from the DirectX SDK package,{{cite web |url=http://www.gamedev.net/reference/articles/article1247.asp |title=DirectX 8 Graphics and Video: A Fresh Start |date=2000-11-30 |publisher=gamedev.net |access-date=2019-04-23 |archive-url=https://web.archive.org/web/20070604171620/http://www.gamedev.net/reference/articles/article1247.asp |archive-date=2007-06-04 |url-status=dead }} but in 2012, the DirectX SDK was merged into the Windows Platform SDK, and DirectDraw was included once again.

Replacement

There has been a deterioration of Windows compatibility with old games that rely upon DirectDraw, with Command & Conquer, Warcraft 2, and Theme Hospital among those affected. In newer Windows versions, some games will refuse to run under a 32-bit bit depth (Dangerous Waters for example), others showing a black screen or glitching when switched out. Re-implementation of DirectDraw has been observed to fix these compatibility problems. Commonly used replacements include:

  • WineD3D from Wine, which translates into OpenGL.{{cite web |last1=Dossena |first1=Federico |title=WineD3D For Windows |url=https://fdossena.com/?p=wined3d/index.frag |website=Federico Dossena |access-date=23 April 2019}}
  • cnc-ddraw and ts-ddraw from CnCNet, a Command & Conquer multiplayer network. Translates into GDI, OpenGL (with GLSL support), or Direct3D 9.{{cite web |title=cnc-ddraw: GDI, OpenGL and Direct3D 9 re-implementation of the DirectDraw API for classic games for better compatibility with Windows XP, Vista, 7, 8, 10 and Wine |url=https://github.com/CnCNet/cnc-ddraw |website=GitHub|author=CnCNet |access-date=23 April 2019 |date=21 April 2019}}
  • DDrawCompat, a wrapper for the vanilla ddraw that corrects problematic calls.{{cite web |author1=narzoul |title=DDrawCompat: DirectDraw compatibility and performance enhancements for Windows Vista, 7, 8 and 10 |url=https://github.com/narzoul/DDrawCompat |website=GitHub |access-date=23 April 2019 |date=21 April 2019}} ddwrapper is an earlier, unrelated wrapper that does the same thing.{{cite web |author1=Aqrit |title=ddwrapper |url=http://bitpatch.com/ddwrapper.html |website=bitpatch.com}}

See also

References

{{reflist}}