Программирование графики с использованием Direct3D

       

Direct3DWinDevice: интерфейс устройства Windows


Объект, обеспечивающий поддержку устройства Direct3D, является примером COM-объекта, поддерживающего несколько интерфейсов. Мы рассмотрели один интерфейс, через который можно использовать устройство — Direct3DRMDevice. Следующий интерфейс, с которым мы познакомимся — Direct3DWinDevice. Интерфейс Direct3DWinDevice представляет устройства, которые поддерживаются Windows. На рис. 3.2 показан объект устройства Direct3D и его интерфейсы.


Рис. 3.2. Объект устройства и его интерфейсы

Поскольку интерфейс Direct3DWinDevice является альтернативным интерфейсом устройства Direct3D, для получения интерфейса WinDevice приложения используют существующее устройство. Для этого применяется функция QueryInterface(), как показано в следующем примере кода:

LPDIRECT3DRMWINDEVICE windev; device->QueryInterface(IID_IDirect3DRMWinDevice, (void**)&windev);

Переменная device — это заранее инициализированный указатель на интерфейс Direct3DRMDevice. Для получения указателя на интерфейс Direct3DRMWinDevice применяется функция QueryInterface() интерфейса устройства. IID_IDirect3DRMWinDevice — это глобальный уникальный идентификатор (GUID) запрашиваемого интерфейса.

Интерфейс WinDevice поддерживает две функции: HandleActivate() и HandlePaint(). Обе эти функции уведомляют Direct3D о том, что были получены некоторые сообщения Windows. Программа, использующая Direct3D, должна вызывать функцию HandleActivate() при обработке сообщения WM_ACTIVATE. Аналогично, при обработке сообщения WM_PAINT программа должна вызвать функцию HandlePaint().



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