To: Chip Anderson who wrote (8617 ) 10/26/1998 11:37:00 PM From: Chip Anderson Respond to of 16960
Tim Sweeny, one of the developers of "Unreal" shared some thoughts on the merits of the various 3D APIs out there (http://unreal.epicgames.com/): =========================== First of all, both our DreamForge partners working on the OpenGL support, and our Direct3D partner have both done a very high-quality job, given the constraints of Unreal and the 3D card drivers available. My feelings on the two 3D standards are based completely on their API's and the quality of drivers available. Next, I wanted to give some more detail on the code. API support layer Lines of C++ code 3dfx Glide 1711 Direct3D 3123 NEC PowerVR 4049 OpenGL 5697 Now, the Glide is the simplest, because it's aimed at the Voodoo family of 3D cards, which are very standard and straightforward to support. For programming to 3dfx cards, Glide is the ideal API. For people thinking "If Glide is so great, why don't other 3D cards support it?" The short answer is, if Glide supported other manufacturer's 3D cards, it would pick up all the complications involved in real-world Direct3D and OpenGL programming: Testing for core capabilities, working around driver bugs, etc. The Direct3D code is next in simplicity. It began as a working 1600 line driver, then expanded as it was optimized and support was added for 3D cards that lack key features. The Direct3D API follows the traditional Microsoft model of being not very beautiful code, but dealing with real-world hardware robustly, by providing a capability-querying mechanism and well-tested drivers. The PowerVR code is large because the PCX2 chip's rendering approach is very different than what Unreal was designed for. This makes the implementation fairly complex, though the next-generation PowerVR, currently on-hold in the PC market while NEC focuses on the Sega DreamCast, is a great chip that's more traditional in its architecture, and more optimal for Unreal. The OpenGL code is large because of optimizations and support for lots of real-world hardware. If reduced to plain-vanilla OpenGL, this would probably be the simplest and most stable driver of them all, because the OpenGL API is very straightforward. ====================== Chip