Microsoft DirectX 2

         

Интерфейс драйвера Direct3D


DirectDraw представляет единый, обьединенный объект для Вас, как программиста прикладной программы. Этот объект объединяет и DirectDraw и  Direct3D. DirectDraw драйвер COM интерфейса (IID_IDirectDraw или IID_IDirectDraw2) и Direct3D драйвер COM интерфейса (IID_IDirect3D) позволяют Вам связываться с тем же самым основным объектом. Поэтому объект Direct3D не создан. Но интерфейс Direct3D к объекту DirectDraw получен. Это достигнуто, используя стандартный COM метод QueryInterface.

Следующий пример показывает, как создать объект DirectDraw и получить интерфейс Direct3D для связи с тем объектом.

LPDIRECTDRAW lpDD;

LPDIRECT3D   lpD3D;

ddres = DirectDrawCreate(NULL, &lpDD, NULL);

if

(FAILED(ddres))

                ...

ddres = lpDD->QueryInterface(IID_IDirect3D,

&lpD3D);

if

(FAILED(ddres))

                ...

Код, показанный в предыдущем примере создает одиночный объект и получает два интерфейса к тому объекту. Следовательно, счет ссылки объекта после IDirectDraw:: QueryInterface - два. Важное значение этот - то, что срок службы Direct3D состояния драйвера является такимже, как у объекта DirectDraw. Выпуск интерфейса Direct3D не уничтожает состояние драйвера Direct3D. Это состояние не разрушается до тех пор, пока все ссылки, или DirectDraw или Direct3D объекты не будут разрушены. Следовательно, если Вы выпускаете интерфейс к Direct3D при замораживании ссылки к DirectDraw интерфейсу драйвера, и перезапросите интерфейса Direct3D, состояние Direct3D будет сохраняться.



Содержание раздела