Wirehead's Rush News
After reading the debate between Alex S. John and Brian Hook, I have notice in a lot of reply from the readers, they were confused about the difference between D3D-native games and OGL-to-D3D-wrapper enabled games. Any half-witted programmer knows the difference between the two, but here is my attempt to clear up this misconception. As some people has believed, the D3DQuake.exe that was posted on the Microsoft web server was a D3D wrapper for GLQuake. However, it was not a wrapper. The D3DQuake.exe was in fact just a Quake map viewer, that is programmed purely using the D3D API. To prove my point to those who does not believe me, the D3DQuake.exe can be run on a system without GLQuake.exe and opengl32.dll. As long as the map files exist in the Quake directory, D3Dquake.exe will interpret the map files and render it with D3D. So in a none technical way, this is how one can visualize it: "map files --> D3Dquake.exe --> D3D driver --> render image" As there is no Opengl32.dll ever involved during the execution, it's not a OpenGL wrapper. The first publicly available D3D wrapper for GLQuake was the one released by S3. As most of us knew, it was pretty slow and looked bad. The second, much was more successful than the first, was the Starfighter (i740) D3D wrapper for OpenGL. It was a OpenGL library (opengl32.dll) that uses the D3D interface to render the game. Normally, this is how GLquake can be visualized to work on a 3Dfx: "map files (game date) --> GLquake.exe --> OpenGL32.dll --> Glide drivers --> rendered image" And for educational purpose, this is how it works on rendition cards: "map files (game date) --> GLquake.exe --> OpenGL32.dll --> Verite drivers --> rendered image" Please note that OpenGL32.dll is "card specific" file in these cases, as to the "card specific" drivers also. OpenGL32.dll is like a direction sign, telling the data where it should go to get processed. The Starfighter OGL to D3D wrapper is actually a very good idea. It works like this: "map files (game date) --> GLquake.exe --> OpenGL32.dll --> D3D drivers --> rendered image" In this case, the OpenGL32.dll is universal, but the D3D driver is "card specific". Since we all have to install D3D driver for our 3D accelerator, and as long as the D3D drivers work, then we can all use the wrapper to play GLQuake. Of course the picture quality varies depend on your D3D driver and how well the OpenGL32.dll is programmed. Please note that OpenGL32.dll was used in the process, therefore it is a wrapper. Now, some of us have heard of Fahrenheit, it's MS and SGI's solution to incorporate OpenGL "gaming" into Direct3D. It will probably work the same was as the Starfighter D3D wrapper, directing the data to be processed by the D3D drivers. Of course by them, driver programmer will have a pretty hard task. Please remember this is very simplified explanation of how OpenGL driver works. It's intended for non-programmers like me.
Version: v1.0
Last Updated on: 3.9.98
Written by: Benjamin Wei-Chun Hsu
Sponsored by: Wirehead Web Designs
Copyright (C) 1998, Benjamin Wei-Chun Hsu