To use execute buffers methods, your application must first initialize DirectDraw in the normal manner and obtain a pointer to the IDirect3D3 interface. For details, see Retrieving an IDirect3D3 Interface. Your application should create a surface that includes the DDSCAPS_3DDEVICE capability. For information on creating surfaces, see Creating Surfaces. It must then call the IUnknown::QueryInterface method for that surface to obtain a pointer to an IDirect3DDevice interface. Use the IDirect3DDevice::CreateExecuteBuffer to create an execute buffer and obtain a pointer to an IDirect3DExecuteBuffer interface. The following figure illustrates this process.