100 likes | 355 Vues
DirectX. CIS 487/587 Bruce R. Maxim UM-Dearborn. DirectX and Win32. Win32 Application GDI Windows Device Driver Interface DirectX DirectX Graphics (DirectDraw/Direct3D) DirectX Audio (DirectSound/DirectSound3D/DirectMusic) DirectInput DirectPlay DirectSetup DirectShow. DirectX.
E N D
DirectX CIS 487/587 Bruce R. Maxim UM-Dearborn
DirectX and Win32 • Win32 Application • GDI • Windows Device Driver Interface • DirectX • DirectX Graphics (DirectDraw/Direct3D) • DirectX Audio (DirectSound/DirectSound3D/DirectMusic) • DirectInput • DirectPlay • DirectSetup • DirectShow
DirectX • Contains a run-time library consisting of several .dll’s that you may distribute with your application • There are several .lib and .h files that make-up the development library • You need to be sure that you know where these files are housed • DirectX is backward compatible
COM • COM allows DirectX to work with multiple programming languages • COM objects can be shipped with an application as .dll’s • COM object provide interfaces to hardware objects • COM objects are loaded dynamically • You can add functionality to an installed application simply by updating the COM object
DCOM • An advanced version of COM • Allows applications to access DCOM objects on networked machines
DirectX Architecture Win32 App Win GDI DirectX Win DDI HEL: HW Emulation Layer HAL: HW Abstraction Layer HW Audio, Video, Input, Storage, …
HAL and HEL • HAL • Lowest level of software • Consists of manufacturer’s device drivers • DirectX figures out the COM interface needed • HEL • Built on top of HAL • Allows emulation of missing hardware (e.g. program still runs whether 3D graphics accelerator card is present or not)
COM Interfaces • The process of creating a COM interface is described in the text • You do not need to create your own COM interfaces if you use DirectX • DirectX provides wrappers round the COM stuff
Creating COM Interfaces • You begin by deriving an interface class from IUnknown (COM base class) • Every derived class inherits 3 methods • QueryInterface( ) – used to request pointer to interface • AddRef( ) – used to increase reference count for COM object • Release( ) – decrements COM object reference counter
Creating COM Interfaces • Basic technique is to create pointers to each device specific function and equate them to a generic function pointer • DirectX will then be able to use the correct COM object when its function is referenced