Поделиться через


Метод IDirect3DSurface9::GetDC (d3d9helper.h)

Извлекает контекст устройства.

Синтаксис

HRESULT GetDC(
  [out] HDC *phdc
);

Параметры

[out] phdc

Тип: HDC*

Указатель на контекст устройства для поверхности.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. D3DERR_INVALIDCALL возвращается, если аргумент недопустим.

Комментарии

Действуют следующие ограничения.

  • IDirect3DSurface9::GetDC действителен только в следующих форматах: D3DFMT_R5G6B5, D3DFMT_X1R5G5B5, D3DFMT_R8G8B8 и D3DFMT_X8R8G8B8. Форматы, содержащие альфа-канал, не поддерживаются, так как реализации GDI не имеют четко определенного поведения в альфа-канале. Дополнительные сведения о форматах см. в разделе D3DFORMAT.
  • Одновременно можно возвращать только один контекст устройства для каждой поверхности.
  • IDirect3DSurface9::GetDC завершится ошибкой, если поверхность уже заблокирована. Если поверхность является членом MIP-карты или кубовой карты, IDirect3DSurface9::GetDC завершается сбоем, если любой другой элемент MIP-карты или кубовой карты заблокирован.
  • IDirect3DSurface9::GetDC завершается сбоем в целевых объектах отрисовки, если они не были созданы блокируемыми (или, в случае задних буферов, с флагом D3DPRESENTFLAG_LOCKABLE_BACKBUFFER).
  • Для поверхностей, не созданных с помощью IDirect3DDevice9::CreateOffscreenPlainSurface, IDirect3DSurface9::GetDC завершится сбоем на поверхностях пула по умолчанию (D3DPOOL_DEFAULT), если они не являются динамическими (D3DUSAGE_DYNAMIC) или блокируемыми целевыми объектами отрисовки.
  • IDirect3DSurface9::GetDC завершится сбоем на D3DPOOL_SCRATCH поверхностях.
Если контекст устройства не отображается на поверхности, приложение не может вызывать следующие методы:
IDirect3DCubeTexture9 IDirect3DCubeTexture9::LockRect
IDirect3DDevice9 IDirect3DDevice9::ColorFill
IDirect3DDevice9::StretchRect
IDirect3DDevice9::UpdateSurface
IDirect3DDevice9::UpdateTexture
IDirect3DSurface9 IDirect3DSurface9::LockRect
IDirect3DSwapChain9 IDirect3DSwapChain9::P resent *
IDirect3DTexture9 IDirect3DTexture9::LockRect
 
  • (в цепочке буферов, содержащей поверхность)

IDirect3DSurface9::GetDC вызывает неявную блокировку; не сохранять контекст устройства для последующего использования. Вызовите IDirect3DSurface9::ReleaseDC , чтобы освободить его.

Допустимо вызывать IDirect3DSurface9::GetDC/IDirect3DSurface9::ReleaseDC на уровнях MIP-карты или кубовой карты, однако эти вызовы будут медленными для всех miplevel, кроме самого верхнего уровня, и операции GDI для этих миплеев не будут ускоряться.

Hdc предоставляет доступ к функциям Win32 и GDI.

Требования

Требование Значение
Целевая платформа Windows
Header d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

См. также раздел

D3DPOOL

D3DPRESENT_PARAMETERS

D3DUSAGE

IDirect3DSurface9

IDirect3DSurface9::ReleaseDC