I did this writeup over at nGlide forums and thought I'd bring it here:
http://www.zeus-software.com/forum/viewtopic. … hp?p=3998#p3998
Techland's "OpenGL" Drivers
Yes, Crime Cities is a Glide game - sorta. It's more like a miniGL game.
Crime Cities uses its own 3D engine that renders to OpenGL, but being as OpenGL on Windows for gaming was fairly new at the time, Techland considered that many videocards did not have full OpenGL ICD's and they wanted to support older cards, so they ended up creating OpenGL-like drivers for many cards and included them with the game. This includes 3dfx Glide.
These pages explain it:
http://web.archive.org/web/19981202024905/htt … glish/index.htm
http://web.archive.org/web/19981207072820/htt … lish/minigl.htm
This is basically what happened for id Software (and others) MiniGL games, although in that case many of the videocard manufacturers created the MinGL driver themselves. (Um, I think. Maybe it was id software instead.)
Here's some information on MiniGL: https://en.wikipedia.org/wiki/MiniGL
So Crime Cities (both the demo and the retail version) ships with Techland's "OpenGL-like" drivers (all named OpenGL32.dll) for 3dfx Voodoo cards (3dfx Glide, aka TC3DFX), Matrox Mystique cards (Matrox MSI, aka TCMSI), PowerVR Series 1 cards (PowerVR PowerSGL, TCSGL), and S3 Virge cards (S3 S3D, TCS3D), plus a generic Direct3D OpenGL driver of their creation (TCD3D). They also include SGI's "Cosmo" OpenGL32.dll, the generic Win9x OpenGL32.dll, and the beta OpenGL32.dll OpenGL ICD for 3dfx Voodoo series.
So in the case of Crime Cities and Glide, it's kinda like:
Crime Cities -> "OpenGL" -> TC3DFX -> Glide.
Adding nGlide to the mix would make it:
Crime Cities -> "OpenGL" -> TC3DFX -> Glide -> nGlide -> Direct3D
which is sorta pointless when it already can use Direct3D either through the ancient MS OpenGL for Win9x or through TCD3D.
We discovered Crime Cities and Techland's uniqueness over a year ago at VOGONS. Credit goes to leileilol. Since they implement a subset of OpenGL 1.x, they are also something fun to experiment with when you're using cards of that generation to try to get other OpenGL or MiniGL games working. You can rename their OpenGL32.dll to the filename required by the game.
In the thread on VOGONS you mention, leileilol was able to get MDK2 to work on a PowerVR Series 1 card by naming the Techland OpenGL32.dll file for PowerVR cards (let's call it TCPVR) "miniGL" as 3dfxgl.dll and then putting that in Windows/SYSTEM, as MDK2 is picky and strictly uses drivers from the Windows System folder.
Including games like Techland's Crime Cities, or miniGL games from id Software, in game lists that list "all Glide games" gets a bit interesting. Technically, you can think of these games as actually being OpenGL games. It's just that OpenGL for gamers really didn't exist or work well at the time (that's a very vague summary), so graphic card manufacturers and videogame publishers ended up making drivers that implemented the subset of OpenGL their games required to work. In many cases these drivers did not "directly use the cards" (most don't anyways) but called their various required 3D API DLLS, such as Glide2x.dll / Glide3x.dll for games that used id Software MiniGL's 3dfxgl.dll.
(And then there were hackers who, even though miniGL only implemented a subset of OpenGL, would take 3dfxgl.dll out of the game and rename it OpenGL32.dll and put it in game folders for games that only supported OpenGL... or other card owners with other miniGL's to OpenGL32.dll, and so on... because "it was faster" than their graphics card's OpenGL ICD, or other things. Mad compatibility issues abound, but sometimes you can get it to work. leileilol's experimenting with Techland's OpenGL driver for PowerVR cards proves that.)
leileilol puts it succinctly here:
Re: Do these DOS Glide games exist?
Claiming an API wrapper to another as native API support is like calling Direct3D games as Glide. […]
Show full quote
Claiming an API wrapper to another as native API support is like calling Direct3D games as Glide.
Native glide = GAME.EXE -> glide2x.dll/ovl || glide3x.dll
Native glide != GAME.EXE -> opengl32.dll (in folder) -> glide2x.dll
Native glide != GAME.EXE -> opengl32.dll (in system) -> 3dfxvgl.dll -> glide3x.dll
Still, wrapper authors like Zeus and game collectors like, um, Gamecollector have included these sort of games in their compatibility testing because wrappers require lots of testing with all sorts of games. They'll probably test it and add it to their compatibility list anyways. 😉 But in the detailed compatibility list, they'll mark it as using Techland OpenGL, and other games id Software MiniGL, and so on.
"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen
Stiletto