Introduction to Direct3D Immediate-Mode Objects
Direct3D's Immediate Mode consists of API elements that create objects, fill them with data, and link them together. Direct3D's Retained Mode is built on top of Immediate Mode. For a description of the overall organization of the system and the organization of Immediate Mode in particular, see Direct3D Architecture.
The following table shows the eight object types in Immediate Mode, their Component Object Model (COM) interfaces, and a description of each:
Object type | COM interface and description |
Interface | IDirect3D |
COM interface object | |
Device | IDirect3DDevice |
Hardware device | |
Texture | IDirect3DTexture |
DirectDraw surface containing an image | |
Material | IDirect3DMaterial |
Surface properties, such as color and texture | |
Light | IDirect3DLight |
Light source | |
Viewport | IDirect3DViewport |
Screen region to draw to | |
Matrix | IDirect3DDevice |
4-by-4 homogeneous transformation matrix | |
ExecuteBuffer | IDirect3DExecuteBuffer |
List of vertex data and instructions about how to render it |
Rendering is done by using execute buffers. These buffers contain vertex data and a list of opcodes that, when interpreted, instruct the rendering engine to produce an image. The execute buffer COM object contains only pointers and some descriptions of the format of the buffer. The contents of the buffer are dynamically allocated and can reside in the memory of the graphics card.
Each of the objects can effectively exist in one or more of the following forms:
·A COM object.
·A structure exposed to the developer that effectively contains a copy of the data in the COM object. This form is typically used to copy data into or out of the actual COM object.
·A handle. In this case, the data resides on the hardware and can be manipulated by it.
The following table shows the forms in which each of the Direct3D objects can exist:
COM interface | Structure | Handle | |
Device | x | ||
Texture | x | x | x |
Material | x | x | x |
Light | x | x | |
Viewport | x | ||
Matrix | x | x | |
ExecuteBuffer | x | x |