Hubbry Logo
Glide (API)Glide (API)Main
Open search
Glide (API)
Community hub
Glide (API)
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Contribute something
Glide (API)
Glide (API)
from Wikipedia
Glide
Original author3dfx Interactive
Stable release
3.10.00.30303 / September 2, 2003; 22 years ago (2003-09-02)
Written inAssembly, C
Operating systemCross-platform
Type3D graphics API
License
Websitesourceforge.net/projects/glide/

Glide is a 3D graphics API developed by 3dfx Interactive for their Voodoo Graphics 3D accelerator cards. It started as a proprietary API but was later open-sourced by 3dfx.[2][3] It was dedicated to rendering performance, supporting geometry and texture mapping primarily, in data formats identical to those used internally in their cards.[4][5] Wide adoption of 3Dfx led to Glide being extensively used in the late 1990s, but further refinement of Microsoft's Direct3D and the appearance of full OpenGL implementations from other graphics card vendors, in addition to growing diversity in 3D hardware, eventually caused it to become superfluous.[5]

Glide wrappers and emulators

[edit]

Glide emulator development has been in progress since the late 1990s. During 3dfx's lifetime, the company was aggressive at trying to stop these attempts to emulate their proprietary API, shutting down early emulation projects with legal threats.[6] However, just before it ceased operations and had its assets purchased by Nvidia, 3dfx released the Glide API, along with the Voodoo 2 and Voodoo 3 specifications, under an open-source license,[7] which later evolved into an open-source project.[8]

See also

[edit]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
Glide is a low-level 3D graphics application programming interface (API) and rasterization library developed by 3Dfx Interactive, Inc., specifically optimized for their Voodoo family of graphics accelerator cards, enabling high-performance real-time 3D rendering in software applications such as video games. Introduced in 1996 alongside the launch of the Voodoo Graphics card, Glide served as a proprietary "micro-layer" API that abstracted hardware-specific details like register access and timing, allowing developers to create efficient 3D applications without direct low-level hardware programming. The API was created by 3Dfx engineer Brian Hook as a subset of OpenGL, focusing on the core functionality needed for rasterization and rendering on Voodoo hardware, which emphasized texture mapping and polygon performance. Early versions, such as Glide 1.0 and 2.x, supported key features including Gouraud shading, alpha blending, mipmapped texture mapping across multiple texture mapping units (TMUs), anti-aliasing for triangles and lines, depth buffering, fog effects, and chroma-keying, achieving rendering speeds of up to approximately 1 million triangles per second on Voodoo1 hardware. Glide 3.0, released in August 1998, introduced significant enhancements such as vertex arrays for streamlined data input, for improved color accuracy, multi-pass fogging, and support for up to 10 million triangles per second on advanced hardware like the and cards, while maintaining compatibility with earlier Voodoo Graphics and Voodoo Rush models. The API's C-callable functions, prefixed with "gr" for core rendering (e.g., grDrawTriangle) and "gu" for utilities, provided direct control over the Voodoo's pixel and texel pipelines, linear frame buffer (LFB) for read/write access, and up to three TMUs for multitexturing. Its simplicity and performance made Glide a preferred choice for game developers in the late , powering titles like Quake and influencing the adoption of 3D acceleration in PC gaming, as it bypassed the complexities of broader APIs like or at the time. Originally proprietary to encourage adoption of 3Dfx hardware, Glide was open-sourced by 3Dfx in December 1999 to broaden its appeal, particularly among developers, and the company also released hardware specifications to facilitate further innovation. Following 3Dfx's acquisition by in 2000 and the subsequent decline of Voodoo hardware, Glide support was phased out in favor of industry standards like and . Today, its legacy endures through software wrappers like nGlide and open-source implementations, which emulate Glide on modern graphics cards to preserve compatibility with classic games.

History

Origins and development

3dfx Interactive was founded on August 24, 1994, in , by Ross Smith, Scott Sellers, and Gary Tarolli, all former employees of (SGI) who had previously worked on advanced graphics systems. The trio, backed by venture capitalist Gordon Campbell, aimed to create high-performance 3D graphics hardware tailored for the emerging consumer gaming market, capitalizing on the popularity of titles like DOOM and Descent. Glide was conceived from the outset as a proprietary, low-level specifically designed to unlock the full potential of 3dfx's Voodoo Graphics hardware by providing direct, efficient access to its rasterization and rendering features. Development of Glide began in 1995 and continued through 1996, with the API implemented primarily in Assembly and to ensure minimal overhead and optimal hardware control. As a thin software layer, it exposed the Voodoo chip's architecture directly to developers, allowing for precise management of video RAM and specialized functions like and anti-aliasing without the abstractions of more general APIs. This approach was inspired by SGI's IRIS GL but streamlined for the Voodoo's dual-ASIC design, which separated units (TMU) from the framebuffer interface (FBI) to prioritize 3D gaming performance over 2D capabilities. The core design philosophy of Glide emphasized simplicity and accessibility for game developers, focusing on a narrow set of gaming-specific optimizations rather than broad or standards compliance. By avoiding direct competition with and instead offering a straightforward interface—using "gr" prefixed functions for commands—it enabled rapid integration and maximized hardware utilization, such as bilinear filtering and , while reducing the need for developers to reverse-engineer the hardware. This developer-centric focus was intended to foster quick adoption in an era lacking standardized 3D APIs for consumer hardware. Early prototypes of Glide were rigorously tested with internal demos during , highlighting the Voodoo 1's abilities in real-time at resolutions up to 640x480. These tests, including arcade-style simulations like showcased at E3 , validated the API's role in demonstrating the hardware's speed and features, such as 1 million triangles per second processing, paving the way for its integration into PC gaming.

Release and adoption

Glide was officially released in November 1996 alongside 3dfx's Voodoo Graphics , bundled as part of the (SDK) provided to developers for creating optimized 3D applications on the new hardware. The SDK included the Glide API as a low-level rasterization library, initially supporting DOS and environments, and was distributed freely to encourage rapid integration into games and tools. The API saw rapid adoption during the late 1990s PC gaming boom, with early support added to id Software's Quake (released June 1996) via a Glide wrapper DLL provided by shortly after the Voodoo launch, enabling enhanced performance through . This momentum continued, leading to over 100 games supporting Glide by mid-1998, including titles like and Unreal, which leveraged the API for superior rendering on Voodoo cards. By 1997, Glide-powered Voodoo cards had achieved market dominance in the 3D accelerator segment, capturing an estimated 80-85% of the market by year-end while held about 24%, amid the growing demand for 3D gaming. The cards were particularly praised for features such as bilinear and 16-bit , which delivered smoother visuals and deeper colors compared to contemporaries, contributing to their widespread appeal in and gaming PCs. Developers appreciated Glide's ease of use relative to Microsoft's at the time, citing its straightforward access to Voodoo-specific hardware capabilities without the complexity of broader cross-platform abstractions. bolstered this adoption by offering the SDK at no cost and providing dedicated , which facilitated quick porting and optimization efforts for game studios targeting the burgeoning 3D market.

Open-sourcing and decline

On December 6, 1999, 3dfx Interactive announced the open-sourcing of the , releasing its under the 3DFX GLIDE , a permissive allowing modification and distribution of derived works while restricting certain commercial uses of the core API. This move occurred amid mounting pressures, just over a year before Nvidia announced its acquisition of 3dfx's assets on December 15, 2000, primarily for valued at $70 million in cash and 1 million shares of stock. The decline of Glide began with 's financial difficulties, exacerbated by its $141 million acquisition of Systems in December 1998, which shifted the company into full-scale manufacturing and strained resources as market competition intensified. By 1999, reported significant losses, including an $11.5 million loss in its second fiscal quarter (ended July 31, 1999), amid declining market share against rivals like and ATI. These troubles were compounded by competition from Microsoft's 6.0, released in August 1998, which included enhancements for hardware-agnostic 3D rendering, and the broader adoption of as a cross-platform, vendor-neutral alternative that diminished Glide's proprietary advantages. The subsequent 7.0 release in September 1999 further accelerated this shift by introducing hardware transform and lighting (T&L) support, reducing the need for Glide-optimized games. Prior to open-sourcing, actively opposed efforts to extend Glide compatibility beyond its hardware through wrappers and emulators, issuing crackdowns on developers and distributors in April 1999—particularly those supporting the emulator—and filing a lawsuit against Creative Labs in June 1999 over a Glide wrapper included in its Graphics Blaster card. These actions, including cease-and-desist demands targeting non-3dfx implementations, aimed to protect Glide's exclusivity but were abandoned by December 1999 with the API's release. Following 's acquisition, Glide maintenance continued briefly under the new ownership, culminating in the final stable release, version 3.10, on September 2, 2003, before being discontinued as prioritized and drivers for its lineup. Post-open-sourcing, community-driven emulation efforts emerged to preserve Glide compatibility on modern hardware.

Technical overview

Core architecture

Glide's core architecture is designed as a thin, hardware-specific rasterization library tailored for Voodoo chipsets, employing a hybrid implementation in C and assembly language to enable direct access to the graphics hardware while bypassing operating system layers, thereby achieving minimal latency in the rendering pipeline. This low-overhead approach, with performance impacts limited to 5-10%, abstracts low-level hardware details to support efficient real-time on 1990s-era processors. Central to the architecture are key components for managing hardware resources and rendering states. Device initialization occurs via functions such as grSstSelect, which selects the Voodoo Graphics subsystem, followed by grSstWinOpen to configure resolution, , and color formats. Buffer management is handled by grBufferSwap, which exchanges front and back buffers with options for vertical retrace synchronization to prevent tearing. relies on grEnable and grDisable to toggle features like (e.g., GR_FOG_WITH_TABLE_ON_Q), depth buffering, and through a state machine that minimizes bandwidth usage. The rendering model adopts a single-pass approach optimized for 3dfx's SST (Single-Stream Triangle) architecture, where geometry setup and scan conversion are processed internally by dedicated chips like Pixelfx for pixel operations and Texelfx for , supporting up to 1-10 million triangles per second with multiple units (TMUs). This pipeline leverages vertex arrays and packed RGBA data for efficiency, enabling advanced texture features in one traversal without multi-pass overhead. The memory model allocates 2 MB or 4 MB of VRAM to each TMU for textures, with separate allocation for s and auxiliary buffers via the FBI, accommodating double or triple buffering configurations with direct linear (LFB) access via locking mechanisms. , particularly 16-bit formats for and optional 16-bit floating-point for w-buffering, ensures precise depth comparisons and computational efficiency suited to the era's hardware constraints.

Key rendering features

Glide's advanced capabilities were central to its rendering prowess, providing hardware-accelerated support for ping to reduce and improve texture quality across distances, with up to nine texture maps per chain and programmable level-of-detail () bias for fine-tuned control. further enhanced realism by blending between bilinear-filtered mipmaps in a single pass on dual-texture-map-unit (TMU) configurations like the Voodoo 2, minimizing performance overhead while delivering smooth texture transitions. Multitexturing allowed up to two textures per rendering pass on Voodoo 2 hardware through chained TMUs, enabling complex surface effects like light mapping combined with base textures without multiple draw calls. The API's anti-aliasing and blending features leveraged dedicated hardware for high-quality output, including full-screen anti-aliasing (FSAA) at 2x and 4x modes that used and alpha-based pixel coverage to smooth jagged edges effectively. Alpha blending supported transparent effects with no rasterization penalty, configurable via source and destination factors such as source alpha and one-minus-source-alpha, allowing seamless integration of semi-transparent elements like particles or glass. Special effects in Glide were optimized for immersive visuals, with built-in detail textures that blended secondary high-frequency patterns onto primary textures based on proximity, achievable in a single pass on multi-TMU setups to add surface granularity without bandwidth loss. Chroma-keying discarded pixels matching a specified reference color, facilitating efficient transparency for overlays or sprites in gaming scenes. Volumetric fog applied per-pixel atmospheric effects using a 64-entry indexed by 1/w for perspective-correct density, supporting modes that integrated fog color and intensity directly into the rendering for depth-enhanced environments. Performance metrics underscored Glide's efficiency on target hardware, achieving up to 50 million pixels per second fill rate on the Voodoo 1, which supported smooth gameplay at 640x480 resolution exceeding 30 frames per second even in complex, textured scenes. These capabilities prioritized real-time rendering for gaming, balancing visual fidelity with the era's hardware constraints.

Programming interface

API structure and functions

The Glide is structured around a single primary header file, glide.h, which declares all core functions and defines constants using the GR_ prefix for enumerations and parameters, such as GR_CLIP_COORDS for coordinate systems and GR_TMU0 for units. Functions follow a gr prefix convention, enabling developers to access hardware-accelerated rendering on Voodoo graphics subsystems without managing low-level device details. This design emphasizes simplicity, with the API exposing a streamlined set of calls for scene setup and primitive submission, typically requiring inclusion of glide.h alongside 3dfx.h for base types and constants. Core functions are categorized into initialization, drawing , and cleanup. Initialization begins with grGlideInit, which detects and configures the hardware, followed by grSstSelect to choose a specific subsystem and grSstWinOpen to establish the rendering window with parameters like resolution and buffer depth. Drawing include grDrawTriangle for rendering filled triangles via three vertex parameters (x, y, and attributes like color or texture coordinates), grDrawVertexList or grDrawVertexArray for batching multiple vertices, and specialized variants like grAADrawTriangle for anti-aliased edges. Cleanup is handled by grGlideShutdown to release resources and grSstWinClose to terminate the window, ensuring proper hardware state reset. Error handling and queries provide and informational support. The grGetString function retrieves version details or extension strings, such as the API version or supported features, while grErrorGet returns codes for runtime issues like invalid parameters. Developers can install custom callbacks via grErrorSetCallback for debug builds, and queries like grSstQueryHardware or grBufferNumPending allow checking hardware capabilities or pending buffer swaps to synchronize frame completion. A typical workflow for a basic scene involves initializing the device with grGlideInit and window setup, configuring render states (e.g., grVertexLayout for attribute packing, grColorCombine for modes), submitting triangles via grDrawTriangle, and swapping buffers with grBufferSwap before cleanup—often spanning 50-100 lines of code for simple textured renders. This pattern enables efficient pipeline usage, with functions like grTexCombine briefly referencing texture and blending features for or modulated mapping.

Development tools and libraries

3dfx Interactive released the official Software Developer's Kit (SDK) to support Glide API development, comprising the Glide Rasterization Library and accompanying utilities for Windows and DOS environments. The full SDK included sample demonstrating core functionalities such as initialization, vertex processing, triangle rendering, , and like fogging and blending, enabling developers to optimize applications for Voodoo hardware. Distributed via developer CD-ROMs starting from version 1.0 in 1996, the SDK facilitated high-performance capable of 1-10 million triangles per second through efficient vertex arrays and packed data formats. A key component of the SDK was MiniGL, a lightweight 1.1 subset wrapper built atop Glide to provide compatibility for existing OpenGL-based games, such as Quake, without extensive code modifications. Official MiniGL releases, including version 1.47 from February 1999, supported , , and processors, abstracting Glide calls into familiar OpenGL functions while maintaining on 3dfx cards. This tool streamlined porting efforts by handling the translation layer, allowing developers to leverage Glide's rasterization strengths indirectly. Debugging capabilities within the SDK featured a dedicated debug build of the , which incorporated validation, callbacks via grErrorSetCallback(), and runtime queries using grGet() for profiling, such as tracking pixels processed (GR_STATS_PIXELS_IN) and system state on Voodoo hardware. These tools enabled real-time monitoring and optimization during development, contrasting with the release build that omitted validation for maximum speed; developers were advised to switch to the debug version for initial testing and . The SDK also included TexUS, a texture utility for converting images (e.g., from BMP formats) into 3dfx-specific .3DF files with mipmaps and compression tables, essential for preparing assets compatible with Glide's texture download functions like grTexDownloadMipMap(). Third-party libraries extended Glide's ecosystem, with Glide64 emerging as an early wrapper integrating the API into emulation projects like , allowing hardware-accelerated rendering of N64 graphics on Voodoo cards through Glide3x calls. This plugin supported features like motion blur and frame buffer emulation by mapping N64 RDP commands to Glide , enhancing compatibility and performance in retro emulation contexts. Documentation for Glide development spanned comprehensive manuals from 1996 to 1999, including the Glide Programming Guide, Reference Manual, and SST1 Application Notes, which detailed API functions, context management, and optimization strategies. These resources, bundled on developer CD-ROMs, featured tutorials for porting applications from to Glide, covering transformations like replacing 's with Glide's immediate-mode rasterization and adapting texture and pipelines. The Porting Guide specifically outlined steps for windowed rendering and , aiding transitions for titles targeting Voodoo Rush and later accelerators.

Hardware support

Compatible 3dfx products

Glide was initially developed to leverage the capabilities of 's Voodoo Graphics hardware, providing optimized 3D acceleration for PC gaming in the late . The Voodoo Rush, released in May 1997, offered Glide compatibility on a PCI card integrating the Voodoo Graphics chip with 2D acceleration, featuring 4 MB or 6 MB EDO RAM (typically 2 MB frame buffer and 2-4 MB texture memory), at 50 MHz with reduced performance due to the PCI interface. The Voodoo Graphics, released in November 1996, marked the first implementation of Glide support, featuring 4 MB of RAM (typically configured as 2 MB for the frame buffer and 2 MB for texture storage) and a single-texture via one Unit (TMU). This setup enabled resolutions ranging from 512×384 to 800×600, with a peak fill rate of approximately 50 million pixels per second at a 50 MHz core clock, prioritizing high-quality bilinear filtered textures and mipmapping for immersive gameplay in titles like Quake. The Voodoo 2, introduced in February 1998, expanded Glide's hardware compatibility with dual-chip Scan-Line Interleave (SLI) support for up to two cards connected via a , allowing doubled performance and resolutions up to ×768. It offered 8 MB RAM configurations (e.g., 4 MB frame buffer and 4 MB texture memory across its Pixelfx2 and dual Texelfx2 chips), multitexturing through two TMUs for applying dual textures in a single pass, and an enhanced texel fill rate of up to 180 million texels per second at 90 MHz (pixel fill rate of 90 million per second), significantly boosting efficiency in multitextured scenes compared to its predecessor. Subsequent models further refined Glide integration. The Voodoo3 series, launched in April 1999, incorporated an on-chip 300 MHz for native full-screen 2D/3D switching without requiring a separate VGA card, while delivering full Glide 2.x and 3.x compatibility at clock speeds up to 166 MHz and resolutions supporting 85 Hz at 1600×1200 in 16-bit color. The , released in late as 3dfx's first consumer 2D/3D hybrid card, provided full Glide 2.x and 3.x support, operating at 100 MHz with 16 MB or 32 MB SDRAM. Early OpenGL acceleration used the MiniGL library, which translated calls to Glide until full ICD drivers were released. Official Glide support was limited to these earlier series, with no dedicated implementation for the Voodoo4 and Voodoo5 cards released in 2000; by then, had prioritized and , rendering Glide a legacy for the VSA-100-based successors despite potential third-party workarounds.

Integration with operating systems

Glide primarily supported and through installable drivers distributed on setup disks, enabling both full-screen and windowed rendering modes via the Win32 . These drivers facilitated integration with the operating system's graphics subsystem, allowing applications to leverage Voodoo hardware without relying on broader standards like or . For environments, Glide provided direct hardware access for full-screen operations, using a null window in initialization calls to bypass any OS-mediated graphics layers. The architecture of Glide's Windows integration centered on the Glide2x.dll , which supported runtime linking to enable seamless application integration and direct communication with hardware, independent of standard OS calls for rendering. This DLL was included in official driver packages, ensuring compatibility with games and tools that statically or dynamically linked against the Glide for accelerated 3D effects. In practice, developers initialized Glide via functions like grGlideInit and grSstWinOpen, passing appropriate window handles for Win32 contexts to handle resizing and movement events. Cross-platform adaptations were limited but notable in community efforts around 1998, particularly for , where unofficial ports emerged to support Voodoo cards under kernels 2.1.x and 2.2.x. These ports included device drivers installed as kernel modules (e.g., creating /dev/3dfx) and utilized X11 for windowed modes through Mesa/ integration, with environment variables like MESA_GLX_FX="window" to enable in 16-bit . Similar limited community drivers appeared for during this period, extending Glide's reach beyond proprietary ecosystems, though official 3dfx backing remained focused on Windows and DOS. Integration challenges arose with and , where native support was absent or severely limited due to the operating systems' stricter kernel protections and, in the case of , mandatory driver signing requirements under WHQL certification. While early NT 4.0 saw some Glide driver availability for Voodoo hardware, the API's direct hardware access model conflicted with NT's protected-mode architecture, often resulting in instability or incompatibility without custom modifications. This lack of official support for these platforms ultimately drove reliance on third-party wrappers for any modern OS compatibility.

Legacy and emulation

Impact on gaming industry

Glide's widespread adoption in the late 1990s significantly influenced 3D game development practices by necessitating multi-API support, as developers were compelled to implement both the proprietary Glide and emerging standards like to reach the dominant hardware base. This fragmentation increased development costs and complexity, ultimately pressuring the industry toward greater standardization around Microsoft's to streamline efforts and broaden compatibility. The API's success propelled to an estimated 80-85% share of the 3D accelerator market during the peak of Voodoo card dominance in 1998, accelerating consumer uptake of affordable 3D graphics hardware and fueling the explosive growth of PC gaming. However, Glide's proprietary nature exacerbated developer fragmentation post-1999, as competing APIs like matured and gained traction, contributing to 3Dfx's declining market position amid rising competition from integrated solutions. In terms of , Glide facilitated a shift toward sophisticated visual techniques, enabling efficient and trilinear mipmapping that popularized richly detailed, textured polygonal environments in landmark titles such as Unreal (1998). These features, optimized for hardware, encouraged developers to prioritize hardware-accelerated effects over software rendering, laying groundwork for advanced rendering paradigms in subsequent eras. Glide holds an enduring cultural legacy as a cornerstone of retro gaming communities, where enthusiasts actively preserve and recreate its era through fan-built hardware and software emulations, reflecting its role in defining the "golden age" of PC 3D graphics. Iconic Glide-powered demos and artifacts, including early simulators, are maintained in institutions like the , underscoring the API's foundational contributions to interactive entertainment.

Wrappers and emulators

Wrappers for the Glide API translate calls from the original library to modern graphics APIs such as or , enabling compatibility with contemporary hardware and operating systems like and later. One prominent example is nGlide, developed by Zeus Software in the 2010s, which emulates the Glide API by converting its functions to 9 (with later versions supporting 11/12 and backends) without requiring original Voodoo hardware. Similarly, dgVoodoo2, created by Dege and first released in 2004 with ongoing updates, includes a Glide wrapper component that maps Glide2x and Glide3x calls to 11/12, supporting resolutions up to 4K and features like on modern GPUs. These wrappers are particularly useful for DOS and Windows games from the late 1990s that relied on Glide for 3D acceleration. Emulation solutions extend Glide support through hardware simulation or full-system environments. Glide3x wrappers, such as those integrated into projects like OpenGLide, provide compatibility for -specific features by intercepting and redirecting calls to software-rendered or modern backends, allowing -era titles to run on non- systems. Full hardware emulators like PCem incorporate Glide functionality by emulating Voodoo cards (including Voodoo1, , , and ) at the hardware level, creating DOSBox-like environments where Glide applications execute natively within the simulated OS, such as or 98. This approach preserves original performance characteristics and avoids translation overhead, though it requires more computational resources from the host machine. Modern open-source projects maintain and extend the original Glide codebase, originally released by in December 1999 under a BSD-like . The SourceForge-hosted Glide project serves as the primary repository for the post-1999 open-source version, providing for Glide2x and Glide3x that developers can compile for legacy hardware support. An active fork, sezero/glide on , builds on this foundation with enhancements for compatibility, including build fixes for modern toolchains and integration with Mesa's softpipe renderer for software-based Glide execution on non-Windows platforms. These wrappers and emulators collectively enable the execution of 1990s Glide-dependent games on current-generation GPUs, often achieving with pixel-perfect rendering in Vulkan-accelerated modes, though interpretive implementations may introduce minor artifacts in edge cases. Recent developments as of 2025 include browser-based emulation projects that translate Glide calls to , allowing classic games to run in modern web browsers without native hardware.

References

Add your contribution
Related Hubs
Contribute something
User Avatar
No comments yet.