Fact-checked by Grok 2 weeks ago

WinG

WinG (pronounced "win gee") is a graphics acceleration application programming interface (API) and software library developed by Microsoft for 16-bit Windows 3.x operating systems, released on September 21, 1994, to enhance bitmap graphics performance in applications, particularly games, by bypassing limitations of the Graphics Device Interface (GDI) and enabling direct hardware access. Created by programmer Chris Hecker within Microsoft's research group, it was designed to eliminate the significant performance disparity between DOS-based graphics and Windows applications, facilitating easier porting of DOS games to the Windows platform. The library focused on efficient handling of device-independent bitmaps (DIBs), supporting offscreen rendering and rapid blitting operations to the screen, which allowed developers to achieve frame rates comparable to native DOS titles without requiring custom display drivers. WinG's implementation involved a dynamic-link library (wing.dll) that provided functions optimizing bitmap operations across various display modes and hardware configurations, including support for palettized and true-color images up to 24 bits per pixel, bypassing slow GDI calls. It was announced at the 1994 Game Developers Conference, demonstrated with a port of Doom called WinDoom, as part of Microsoft's efforts to position Windows as a viable gaming platform ahead of the Windows 95 release, serving as an early precursor to more comprehensive APIs like DirectDraw in DirectX. While initially targeted at Windows 3.1 and later versions, WinG saw adoption in approximately 47 notable games, including titles like Doom ports and Sid Meier's Colonization, but was gradually phased out with the introduction of enhanced GDI features in Windows 95 and the rise of DirectX, with native support ending in Windows 98 SE.

History and Development

Origins in Windows Graphics Limitations

In the early 1990s, the (GDI) in Windows 3.x presented significant bottlenecks for graphics-intensive applications, particularly games, due to its design prioritizing device independence over speed. GDI operations like BitBlt for blitting bitmaps were inherently slow because they relied on handle-based bitmaps (HBITMAPs) that applications could not directly read or write, forcing developers to route pixel data through slower Device Independent Bitmaps (DIBs) via functions such as StretchDIBits, which performed 3 to 20 times worse than direct GDI blits in typical scenarios. This inefficiency stemmed from GDI's abstracted access to hardware, lacking direct video memory manipulation, which exacerbated delays in rendering updates. These limitations were especially pronounced in 8-bit and 16-bit color modes, where GDI's palette management added overhead through color translation and remapping. In 8-bit (256-color) modes, Windows reserved 20 colors for the system user interface, restricting applications to a practical palette of 236 colors and complicating fast animation by requiring constant palette synchronization to avoid dithering artifacts or flashing. For 16-bit modes, GDI's lack of optimized hardware acceleration meant even basic drawing primitives like LineTo executed sluggishly, often taking milliseconds per operation on period hardware, making real-time graphics infeasible without custom workarounds. DOS maintained dominance in PC gaming during this era because it allowed direct access to VGA hardware modes, enabling far superior performance compared to Windows equivalents. VGA Mode 13h, a standard 320×200 resolution with 256 colors and a linear layout in video memory, permitted efficient page flipping and blitting operations that achieved smooth 30 or higher in complex scenes, as seen in titles like Doom (1993), where texture-mapped environments ran fluidly without GDI-like abstractions. In contrast, Windows games struggled to match even basic DOS benchmarks, often dropping to single-digit frame rates for similar visuals due to the absence of such low-level control. Market pressures intensified these issues as DOS-based games captured the majority of the PC audience in the early , with Windows holding a minority share of the PC operating system market. responded by prioritizing Windows as a gaming platform to consolidate its OS dominance, but GDI's constraints hindered adoption until targeted solutions emerged. Microsoft programmer Chris Hecker played a pivotal role in highlighting these problems through detailed performance dissections, demonstrating in 1994 how GDI inefficiencies caused Windows ports of DOS games like Doom to underperform by orders of magnitude and advocating for to bridge the gap.

Creation and Release by Microsoft

In 1994, initiated an internal project to address the performance gap in graphics between DOS and Windows applications, particularly for games, with Chris Hecker leading the development as a in the company's group—one of the small Microsoft projects. Hecker, assisted by engineer Todd Laney, focused on creating a lightweight extension that would enable faster bitmap handling without requiring a full overhaul of the Windows 3.x graphics subsystem. WinG was officially released on September 21, 1994, as a free download for developers targeting Windows 3.1x, available through channels like CompuServe's WinMM forum and Microsoft's FTP server. The initial version introduced key features such as WinGBitmaps, which functioned as offscreen surfaces for efficient pixel manipulation and blitting, and support for direct access to video memory to accelerate transfers from offscreen buffers to the display. These capabilities allowed developers to achieve graphics performance comparable to or exceeding DOS equivalents by bypassing some of Windows' overhead in bitmap rendering. Microsoft marketed WinG as a straightforward solution for porting DOS games to Windows, emphasizing its simplicity for high-performance graphics without deep system modifications. The release included a software development kit (SDK) with sample code and documentation to facilitate integration, demonstrated publicly at the 1994 Game Developers Conference via a port of id Software's Doom. This positioning aimed to boost Windows' appeal among game developers amid competition from DOS-dominant titles.

Technical Architecture

Core Components and API Design

WinG employs a software-based that optimizes high-level calls for bitmap operations using device-independent bitmaps (DIBs), enabling efficient rendering on supported Windows platforms. This design allows applications to bypass the performance limitations of the traditional Graphical Device Interface (GDI) by providing direct access to pixel data in system memory bitmaps and fast blitting functions, which select optimized transfer methods compatible with the display configuration. Central to WinG's architecture are offscreen bitmaps implemented as GDI-compatible handles (HBITMAPs) backed by device-independent bitmaps (DIBs), providing surfaces independent of the primary display for efficient drawing operations. These offscreen surfaces support techniques such as double buffering for flicker-free animation and composition of frames in system memory before transfer, reducing overhead associated with GDI's device-specific constraints. Direct blitting mechanisms then enable rapid transfer of these bitmaps to the primary screen surface, minimizing in graphics-intensive applications like games. WinG utilizes standard Windows data structures like HBITMAPs for bitmap management, with underlying DIB formats allowing direct access to pixel data for custom rendering routines. The API maintains compatibility across diverse hardware by using device-independent formats that adapt to available display capabilities through Windows mechanisms, without exposing low-level details to developers. The API's design philosophy emphasizes simplicity and ease of porting from applications, mapping common VGA functions to equivalent WinG calls to achieve performance comparable to or exceeding -based graphics, while avoiding the complexity of more comprehensive frameworks like . This approach was motivated by the need to address performance gaps in porting games to Windows environments.

Key Functions and Data Types

The API exposes a set of functions optimized for efficient handling and rendering in 16-bit Windows environments, emphasizing to device-independent bitmaps (DIBs) for development. Central to setup is the WinGCreateDC function, which creates a specialized device context (HDC) tailored for WinG operations, returning a to this context upon success; it takes no parameters and is essential for subsequent bitmap and blitting calls. Bitmap creation and manipulation rely on functions like WinGCreateBitmap, which allocates an offscreen HBITMAP compatible with the provided WinG , using a BITMAPINFO structure for the bitmap header (including dimensions, , and color table) and an output pointer to the raw bits (ppBits) for direct access; it returns the bitmap handle or on failure. To retrieve the pointer to the DIB bits after creation, WinGGetDIBPointer is used, taking the HBITMAP and a BITMAPINFO header as input and returning a far pointer to the data, enabling low-level modifications without GDI overhead. The primary acceleration for rendering is provided by WinGBitBlt, which performs a fast bit-block transfer from a source WinG DC to a destination (which can be a screen or ), specifying source and destination origins (nXOriginSrc, nYOriginSrc, nXOriginDest, nYOriginDest), widths, and heights; it returns BOOL (non-zero for success) and supports direct DIB-to-screen copies but lacks explicit raster operation flags in its basic form, relying on standard GDI semantics for simple copies. For cleanup, while no dedicated uninitialize function exists, developers must call standard GDI functions such as DeleteDC on the WinG context and DeleteObject on bitmaps to free resources and avoid leaks. Supporting data types include the BITMAPINFO structure, which defines bitmap properties like biSize, biWidth, biHeight, biPlanes, biBitCount, and bmiColors array for palette entries, passed by reference to creation and pointer functions. Additionally, the WING_DITHER_TYPE specifies dithering patterns for operations (e.g., in WinGCreateHalftoneBrush), with values such as WING_DISPERSED_4x4 (4x4 dispersed matrix), WING_DISPERSED_8x8 (8x8 dispersed), and WING_CLUSTERED_4x4 (4x4 clustered). No specialized WING_Initialize or WING_BitBltInfo structures are defined; instead, standard Windows types like HDC, HBITMAP, RGBQUAD for colors, and UINT for indices handle transfer operations. Error handling in functions primarily uses BOOL return values (zero indicating failure, often due to invalid parameters, unsupported formats, or hardware limitations like insufficient video memory), supplemented by the global GetLastError for detailed Windows error codes such as ERROR_INVALID_PARAMETER or ERROR_NOT_ENOUGH_MEMORY; no unique WINGERR_ constants are exposed, distinguishing it from more modern APIs.

Implementation and Integration

Developer Workflow and Setup

To integrate WinG into Windows 3.x applications, developers first obtain the SDK from Microsoft's Download Center as the Wing10.exe. Unzipping this file to a temporary directory and executing SETUP.EXE installs the WING.DLL system-wide, along with developer tools including a help file for reference and a program group containing sample programs demonstrating basic usage, such as bitmap creation and blitting operations. The SDK provides header files like WING.H for inclusion in source code, enabling access to WinG functions, and a static library (WING.LIB) for linking. For 16-bit compilers compatible with Windows 3.x, such as early versions of Microsoft Visual C++, developers add the WinG library to the project linker settings or command-line invocation (e.g., via TLINK with the /v option for debug symbols if using the debug version of WING.LIB), ensuring compatibility with the Windows 3.x subsystem; no special import libraries are required beyond standard Windows linking against USER.LIB and GDI.LIB. Sample applications in the SDK illustrate this process with C++ source code that compiles under these environments. WinG integration begins after standard Windows application startup, typically in the WinMain following the creation of the main window and message loop setup. Developers call WinGCreateDC to obtain a device context optimized for direct access, followed by WinGRecommendDIBFormat to query supported pixel formats and confirm availability (e.g., returning 8-bit or 24-bit RGB if the display adapter supports it). This sequence ensures the application detects WinG-compatible before proceeding to operations. No global library initialization is required, as functions are self-contained and rely on the loaded WING.DLL. A basic WinG application skeleton integrates with the message loop as follows, using offscreen drawing for animation or rendering:
c
#include <windows.h>
#include <wing.h>

HDC hdcWing;  // Global WinG device context
HWND hWnd;    // Main window handle

LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
        case WM_PAINT: {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            // Example: Blit from WinG bitmap to window DC
            WinGBitBlt(hdc, 0, 0, 320, 200, hdcWing, 0, 0, SRCCOPY);
            EndPaint(hWnd, &ps);
            return 0;
        }
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpszCmdLine, int nCmdShow) {
    // Register window class (standard Windows setup)
    WNDCLASS wc = {0};
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszClassName = "WinGApp";
    RegisterClass(&wc);

    hWnd = CreateWindow("WinGApp", "WinG Example",
                        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 320, 200,
                        NULL, NULL, hInstance, NULL);
    ShowWindow(hWnd, nCmdShow);

    // Initialize WinG post-window creation
    hdcWing = WinGCreateDC();
    if (!hdcWing) {
        // Handle error: No WinG support
        MessageBox(NULL, "WinG not available", "Error", MB_OK);
        return 1;
    }
    // Create example bitmap (e.g., 320x200, 8-bit)
    // ... (use WinGCreateBitmap and drawing calls here)

    // Standard message loop
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    // Cleanup
    DeleteDC(hdcWing);
    return msg.wParam;
}
This allows drawing to an offscreen DIB via the in WM_PAINT or , then blitting to the screen for efficient rendering; samples in the SDK expand on this with double-buffering techniques.

Performance Optimization Techniques

Developers can maximize 's graphics by employing offscreen surfaces to batch rendering operations before transferring the final image to the primary surface, which minimizes screen updates and reduces . This technique involves creating offscreen buffers using WinGCreateBitmap with a BITMAPINFO , allowing direct manipulation in memory before a single efficient to the via WinGBitBlt or WinGStretchBlt. By batching multiple drawing commands into these offscreen areas, applications avoid frequent GDI interactions, as functions bypass traditional GDI limitations like slow BitBlt calls, enabling smoother animations and higher frame rates in resource-constrained environments. Hardware-specific optimizations further enhance efficiency by querying device capabilities at to select the most suitable s. The WinGRecommendDIBFormat function determines the optimal DIB , such as top-down versus bottom-up scanlines, based on the hardware, while identity palette mapping aligns the WinGBitmap color table with the hardware palette for accelerated blits in paletted modes like 8-bit. For instance, on VGA hardware, selecting 8-bit paletted modes over 16-bit direct color can yield significant speedups when palette operations are minimized, as this leverages hardware-accelerated color lookups without unnecessary conversions. These adaptations ensure and peak across varying configurations, such as standard VGA setups common in the mid-1990s. Effective is crucial for sustaining high throughput, particularly through the use of DIB sections for direct access without frequent reallocations. WinGBitmaps provide a unified that combines DIB properties with HBITMAP functionality, granting immediate pointer access to data while ensuring scanlines are dword-aligned for efficient CPU operations—for example, a 201-pixel-wide allocates 204 bytes per scanline to maintain . Developers should signed scanline increments (e.g., positive for top-down DIBs, negative for bottom-up) to navigate buffers correctly, avoiding costly copies or reallocations during . This approach, combined with buffering to hide and dirty techniques to update only changed regions, directly addresses GDI's overhead in handling. Benchmark results underscore WinG's impact, enabling applications like WinDoom to achieve frame rates equivalent to their DOS counterparts on Windows platforms. These gains stem from WinG's direct hardware access and optimized DIB transfers, which eliminate GDI's device-dependent bottlenecks.

Compatibility and Platform Support

Supported Operating Systems and Hardware

WinG was primarily supported on Windows 3.1x operating systems, including Enhanced Mode and , which enabled its high-performance graphics capabilities through protected-mode execution on 386 or later processors. Compatibility extended to and 3.51, early builds of , and , where it integrated with the evolving 32-bit architecture, though support was deprecated in Windows 98 SE and removed in and later. The library required separate installation via the WinG SDK, as it was not bundled with these operating systems by default. There was no support for Windows 3.0 or earlier versions, which lacked the Enhanced Mode features necessary for WinG's Device Independent Bitmap (DIB) optimizations and . In Windows 95, WinG offered partial compatibility for 32-bit applications through thunking, allowing 16-bit WinG interfaces to bridge to native 32-bit functions like CreateDIBSection for accelerated rendering. Hardware requirements for centered on VGA-compatible or superior graphics cards supporting at least 256 colors, ensuring efficient DIB section creation and blitting without hardware acceleration dependencies. It performed effectively on standard VGA hardware, with features such as page flipping and double buffering optimized for VGA-compatible adapters. WinG incorporated runtime detection mechanisms to verify the presence of Drivers (VDD) and assess hardware capabilities, using functions like WinGRecommendDIBFormat to select the optimal format for the detected configuration. This ensured graceful fallback to software-based rendering on compatible systems.

Known Limitations and Workarounds

, as a software-based , relied on CPU for operations like , which could lead to bottlenecks in applications requiring resizing or effects. The provided no built-in integration for audio handling, requiring developers to use separate Windows like or Waveform Audio for sound, thus complicating synchronization between graphics updates and audio playback. The architecture of was inherently 16-bit, limiting its native compatibility with 32-bit applications and necessitating thunking mechanisms for cross-bitness calls on platforms like , a constraint that persisted until the introduction of DirectX's , which offered full 32-bit support with hardware acceleration. Some display drivers, such as certain drivers, could cause issues with the WinG display profiler. To mitigate these limitations, developers often fell back to the standard GDI for operations unsupported by , such as complex transformations, accepting the trade-off in performance for broader compatibility. Extensive testing across multiple hardware configurations was recommended to identify and avoid unstable setups. Common bugs included memory leaks during repeated blits, where successive calls to wingBitBlt without proper surface cleanup accumulated allocated resources, leading to gradual degradation in application stability. Developers could workaround by implementing explicit memory freeing after each operation. Additionally, GDI functions like TextOut could fail after WinG calls due to GDI hooking, and WinG did not support multiple instances of an application.

Adoption and Impact

Notable Games and Applications

WinG facilitated the porting and enhancement of several -based games to Windows platforms in the mid-1990s, enabling faster 2D graphics rendering through optimized blitting functions that bridged the performance gap between and Windows environments. Prominent games that utilized include the Windows port of Doom (1994), which leveraged the for smoother enemy and level rendering, making it one of the first major titles to demonstrate 's potential for action games. (1994) employed to accelerate city simulation visuals, allowing for dynamic zooms and updates without significant lag on systems. Other notable examples are (1995), a Sega port that used for its comic-book-style animations, and Fury3 (1995), which applied the to enhance its 3D polygonal flight sequences. Strategy titles like Sid Meier's Civilization II (1996) and Heroes of Might and Magic II (1996) also integrated to handle complex map drawing and unit movements efficiently. In addition to gaming, supported early and educational applications by speeding up image blitting for interactive content. The series, including Reader Rabbit 2 Deluxe! (1996) and Reader Rabbit's Reading 1 (1997), utilized WinG to deliver fluid animations and exercises, enhancing engagement for young learners. Multimedia titles such as Disney's Animated Storybook: (1994) benefited from WinG's acceleration for storybook page turns and video clips, while adaptations like (1995) and building simulations like (1994) employed it for responsive elements and isometric views. These applications highlighted WinG's role in broadening Windows' appeal for non-gaming interactive software. By 1996, had been adopted in approximately 47 titles, according to comprehensive compilations of supported software, underscoring its niche but influential role in early Windows game and app development before the rise of .

Legacy and Transition to

served as an important precursor to Microsoft's API, particularly influencing the development of in 1.0, which was released on September 30, 1995, as part of the Windows Game SDK. Key concepts from , such as support for offscreen surfaces and efficient blitting operations, were integrated into to provide developers with low-level access to graphics hardware while maintaining compatibility with Windows environments. This transition marked an evolution from 's focus on bridging and Windows graphics performance to a more comprehensive multimedia framework in . As matured with subsequent releases, WinG's usage declined rapidly between 1996 and 1997, being phased out in favor of the more robust and extensible and enhancements to the (GDI). Official out-of-the-box support for WinG was ultimately dropped in Second Edition, rendering it obsolete for new development on later operating systems. Historically, WinG significantly contributed to establishing Windows as a viable gaming platform by enabling smoother ports of games and delivering graphics performance comparable to native DOS applications, thus encouraging developers to target Windows 3.x environments. Its emphasis on influenced the design principles of future APIs, promoting standardized access to display resources and fostering the growth of the Windows gaming ecosystem in the mid-1990s. In modern contexts, WinG retains relevance through emulation tools like DOSBox-X, which supports the installation of the to run applications and games requiring its functionality. Preservation efforts by enthusiast communities, such as Win3x.Org, further sustain access to WinG resources, including downloads and discussions on its implementation for 16-bit Windows software, ensuring that historical games and demos remain playable on contemporary systems.

References

  1. [1]
    List of WinG games - PCGamingWiki PCGW
    Apr 26, 2025 · WinG was an API developed by Chris Hecker at Microsoft and released September 21, 1994 which intended to help game developers more easily port DOS games to ...
  2. [2]
    A Whirlwind Tour of WinG - Game Developer
    WinG is a library that eliminates the performance difference between DOS and Windows graphics, giving Windows games graphics performance at or above their DOS ...
  3. [3]
    WinG - BetaWiki
    May 27, 2025 · WinG is a library for Windows 3.1x, which is a back-port of an early version of the Chicago DIB engine. WinG. Placeholder.svg. Type, graphics ...
  4. [4]
    Microsoft WinG : Microsoft : Free Download, Borrow, and Streaming
    Apr 17, 2016 · Microsoft WinG is a library for runtime playback and creating WinG applications, installed via a setup program.
  5. [5]
    None
    ### Summary of WinG Origins, Windows 3.x GDI Problems, Slow Graphics, DOS vs Windows Performance, and Chris Hecker's Analysis
  6. [6]
    [PDF] DECEMBER/JANUARY 1995 - GDC Vault
    Chris. Hecker went out of his way to make the. WinG API identical to the CreateDIBSec- tion API, so the two are nearly inter- changeable. If you want to require ...
  7. [7]
    Total share: 30 years of personal computer market share figures
    Dec 14, 2005 · The platform went from a 55 market share in 1986 to an 84% share in 1990. The Macintosh stabilized at about 6% market share and the Amiga and ...
  8. [8]
    The History of DOS and Windows PC Games in the 20th Century
    Apr 18, 2025 · In 1995, Microsoft released Windows 95, which effectively began a new era of PC gaming after the DOS era. Windows had. now become the standard ...
  9. [9]
    Doing Windows, Part 10: Chicago | The Digital Antiquarian
    Nov 18, 2022 · By very early in 1994, a young Microsoft programmer named Chris Hecker, working virtually alone, had put together a promising system called WinG ...
  10. [10]
    Bet on Black: How Microsoft and Xbox Changed Pop Culture
    Nov 13, 2020 · ... Chris Hecker, who was working with a Microsoft engineer to produce WinG," St. John says. WinG was a library of graphics routines to help ...
  11. [11]
    WinG API video games (Software theme)
    Chris Hecker assisted by Todd Laney created the WinG API. It was apparently not some concerted effort sanctioned by Microsoft to improve Windows gaming.
  12. [12]
    [PDF] Attention: - Chris Hecker
    Finally there's help: WinG. WinG is a library that eliminates the performance difference between DOS and Windows graphics, giving Windows games graphics.Missing: analysis | Show results with:analysis
  13. [13]
    Q125698: HOWTO: Obtain Microsoft WinG SDK and General Overview of WinG
    ### Summary of WinG Core Components and API Design (Microsoft KB Article Q125698)
  14. [14]
    DirectDraw Programming Tutorial - GameDev.net
    DirectDraw is a video memory manager that allows direct access to video memory, enabling fast blitting of bitmaps using the video hardware's blitter.Missing: initial | Show results with:initial
  15. [15]
    wing.dll16 - Wine API - WineHQ
    NAME. wing.dll16. DESCRIPTION. The Windows Game dll provides a number of ... WinGBitBlt (implemented as WinGBitBlt16). Copyright © 2025 The Wine Project ...
  16. [16]
    Using C DLLs with Delphi (and HeadConv v4.20) - Bob Swart
    wing.h - WinG functions, types, and definitions * * Copyright (c) 1994 ... WinGBitBlt( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest ...
  17. [17]
    HOWTO: Obtain Microsoft WinG SDK and General Overview of WinG
    WinG allows the programmer to create a GDI-compatible HBITMAP with a Device Independent Bitmap (DIB) as the drawing surface. Programmers can use GDI or ...
  18. [18]
    (offer) 1994 Microsoft WinG Sample Application - BetaArchive
    Jan 28, 2011 · This is a sample from the WinG SDK. The SDK has its c++ code and a help file eplaining how to program WinG headers and debug libs.
  19. [19]
    SP95: Video for Windows and WinG - Jacob Filipp
    ... <wing.h> // Global Variables static HINSTANCE hInstanceG = 0; // Data instance handle. static HWND hMCIWndG = 0 ; // Handle of the MCI display window. static ...
  20. [20]
    /wine-10.18/dlls/wing32/wing32.c
    ### Summary of WinG API Functions in wing32.c
  21. [21]
    [PDF] Introducing Microsoft Windows 95 - Bitsavers.org
    For example, VDD is a virtual device driver for a display device, a VTD ... WinG is available for Windows 3.1, and provides many of the same benefits as ...
  22. [22]
  23. [23]
    DirectX - Wikipedia
    API. Direct3D (the 3D graphics API within DirectX) is widely used in the development of video games for Microsoft Windows and the Xbox line of consoles.DirectX Raytracing · Direct3D · DirectX Media
  24. [24]
    Installing Microsoft Windows 95 in DOSBox-X
    ### Summary of WinG Support or Installation in DOSBox-X
  25. [25]
    Microsoft WinG - Win3x.Org
    ### Summary of Discussion on WinG Preservation and Use in the Community