About
Quake is id Software's first-person shooter, whose GLQuake variant (based on the Quake 1.09 engine) this project modifies. D3DQuake is a graphics-backend port of id Software's GLQuake that replaces its roughly 50 OpenGL calls with Direct3D 7.0 equivalents, contained mostly in a single file (gl_fakegl.cpp) plus a small number of #ifdef'd changes to the main GLQuake sources. It targets Windows and requires a DirectX 7-capable video card with at least 8MB of video RAM; it was primarily tested on Windows 2000 with NVIDIA TNT2 and GeForce 256 cards.
How it differs from the original
The author reports D3DQuake generally runs slower than GLQuake — from around 36% of GLQuake's frame rate in the earliest version up to about 74-95% in later, more optimized builds — due to overhead in the OpenGL-to-Direct3D translation layer. Known bugs include incorrect lighting in fullscreen or 16-bit-per-pixel desktop modes, and it does not check hardware capability bits.
Getting started
Compile by opening the WinQuake project in Visual Studio 6.0 or later and selecting the "Win32 D3D Release" or "Win32 D3D Debug" configuration; the resulting executable is used the same way as the original GLQuake.exe, dropped into a Quake 1.06 shareware or full installation.
History
The author, who worked at WebTV (then a Microsoft subsidiary), wrote D3DQuake to learn about Quake and Direct3D, and notes it is unrelated to an earlier, unofficial 1996 Direct3D Quake port written by a Microsoft summer intern.
Known limitations
- compatibility: Does not check capability bits; requires DirectX 7 drivers and 8 MB of video RAM.
- graphics: When run fullscreen or with 16-bit-per-pixel desktop, some levels have bad lighting.
- performance: Performance is approximately 50-74% of GLQuake depending on version and system.
- platform: Voodoo3 cards experience texture corruption after running for a while; Matrox G400 has mixed reports of crashes.
Additional notes
- Trivia
- The author found OpenGL's API cleaner and easier to use than Direct3D 7.0 for this project, and believed matching OpenGL's performance would require restructuring much of Quake's OpenGL-optimized data structures.