The featureset of D3D is derived from the featureset of what hardware provides. In general, Direct3D is designed to be a 3D hardware interface. Though the specification is built on C, it can be implemented in other languages as well. It is built around the concept of a finite state machine, though more recent OpenGL versions have transformed it into much more of an object based system. OpenGL is a specification based on the C programming language. These include Visual Basic and Visual Basic Script, among others. The plus side of using COM is that you can use the same API in any COM-aware language. Functions for acquiring values don't return the value in the return argument for the function because all COM functions return a "HRESULT" that tells whether the function executed correctly or not. The use of this framework means that C++ code is a little unusual. Direct3D and OpenGL still follow different paradigms, though.ĭirect3D is built upon Microsoft's COM. However, many changes were made in Direct3D 8, and Direct3D could no longer be called a clumsy API. plan file in which he urged Microsoft to abandon Direct3D in favor of OpenGL. The most famous complaint was probably made by high-profile game developer John Carmack in the. The Direct3D model frustrated many programmers. In contrast, OpenGL only requires a single "glEnable(GL_BLEND) " call. For example, to enable alpha blending, one had to create a so-called execute buffer, lock it, fill it with the correct opcodes (along with a structure header telling how many opcodes the buffer contained and a special "exit" opcode), unlock it, and finally send it to the driver for execution. Template:Citation needed Ease of use īefore version 8, Direct3D was known to be rather clumsy to use - to perform a state change, for instance, it required a number of complex operations. While no current or upcoming console uses exactly standard graphics APIs, the Microsoft Xbox 360 uses a variant of Direct3D while the Sony PlayStation 3 uses a variant of OpenGL ES.ĭirect3D is reportedly easier to implement in silicon, resulting in low-performance integrated solutions (such as Intel Extreme Graphics) having significantly better Direct3D performance than they do OpenGL. On the other hand, while Microsoft's segment of the console market is growing, it is very small, especially compared to that of Sony's, and predicted by analysts to remain so. Those aiming at the desktop computer gaming market should consider that its non-Windows segment is still relatively small. In terms of portability, Direct3D is a much more limiting choice however, this "lock-in" will only be a problem for some applications. These manufacturer-supplied drivers nearly all include OpenGL support through the ICD (Installable Client Driver). Windows thus requires the correct drivers from the GPU's manufacturer or vendor for OpenGL hardware support, as well as the full performance in its Direct3D support. Other platforms supply very few drivers for any hardware, OpenGL or otherwise. Microsoft's stance on this is that eliminating OpenGL inconveniences few and allows them to support more hardware in the same testing time. Microsoft's supplied OpenGL driver in Windows (including Vista) provides no hardware acceleration or support for extensions. Even more operating systems have OpenGL software renderers. With the exception of Windows, all operating systems that allow for hardware-accelerated 3D graphics have chosen OpenGL as the primary API. OpenGL, on the other hand, has implementations available across a wide variety of platforms including Microsoft Windows, Linux, UNIX-based systems, Mac OS X and game consoles by Nintendo and Sony, such as the PlayStation 3. Microsoft once started development on a port to Apple Computer's Mac OS, but later abandoned this project. Several partially functional ports of the Direct3D API have been implemented by Wine, a project to port common Windows APIs to Linux, but this work is difficult due to the dependency of DirectX as a whole on many other components of the Windows operating systems. For the most part, Direct3D is only implemented on Microsoft's Windows family of operating systems, including the embedded versions used in the Xbox family of video game consoles.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |