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


Метод ID3D10Buffer::Map (d3d10.h)

Получите указатель на данные, содержащиеся в ресурсе, и запретите доступ GPU к ресурсу.

Синтаксис

HRESULT Map(
  [in]  D3D10_MAP MapType,
  [in]  UINT      MapFlags,
  [out] void      **ppData
);

Параметры

[in] MapType

Тип: D3D10_MAP

Флаг, указывающий разрешения ЦП на чтение и запись ресурса. Возможные значения см. в разделе D3D10_MAP.

[in] MapFlags

Тип: UINT

Флаг, указывающий, что должен делать ЦП, когда GPU занят (см . D3D10_MAP_FLAG). Этот флаг является необязательным.

[out] ppData

Тип: void**

Указатель на данные ресурса буфера.

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

Тип: HRESULT

Если эта функция выполняется успешно, она возвращает S_OK. В следующем списке приведены некоторые причины, по которым может возникнуть сбой карты .

  • Если MapFlags указывает D3D10_MAP_FLAG_DO_NOT_WAIT, а GPU еще не завершен с ресурсом, ID3D10Buffer::Map возвращает DXGI_ERROR_WAS_STILL_DRAWING.
  • ID3D10Buffer::Map возвращает DXGI_ERROR_DEVICE_REMOVED, если MapType содержит какие-либо флаги, разрешающие чтение, и аппаратное устройство (то есть видео карта) было удалено.
Дополнительные сведения о предыдущих возвращаемых значениях см . в разделе DXGI_ERROR.

Комментарии

Чтобы ЦП записыл содержимое ресурса, ресурс должен быть создан с флагом динамического использования, D3D10_USAGE_DYNAMIC. Чтобы прочитать и записать это содержимое, необходимо создать ресурс с флагом промежуточного использования, D3D10_USAGE_STAGING. (Дополнительные сведения об этих флагах см. в разделе D3D10_USAGE.) ID3D10Buffer::Map извлекает указатель на данные ресурса. Обсуждение эффективного доступа к ресурсам см. в разделе Копирование и доступ к данным ресурсов (Direct3D 10).

Вызовите ID3D10Buffer::Unmap , чтобы означать, что приложение завершило доступ к ресурсу.

ID3D10Buffer::Map имеет несколько других ограничений. Пример:

  • Один и тот же буфер не может быть сопоставлен несколько раз; Другими словами, не вызывайте ID3D10Buffer::Map в уже сопоставленном буфере.
  • Перед выполнением любой операции отрисовки (то есть ID3D10Device::D raw) необходимо разархивировать любой буфер, привязанный к конвейеру.
Различия между Direct3D 9 и Direct3D 10:

ID3D10Buffer::Map в Direct3D 10 аналогично блокировке ресурсов в Direct3D 9.

Требования

   
Целевая платформа Windows
Header d3d10.h
Библиотека D3D10.lib

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

Интерфейс ID3D10Buffer