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


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

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

Синтаксис

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

Параметры

[in] Subresource

Тип: UINT

Номер индекса подресурса. Дополнительные сведения см. в разделе D3D10CalcSubresource .

[in] MapType

Тип: D3D10_MAP

Указывает разрешения ЦП на чтение и запись для ресурса. Возможные значения см. в разделе D3D10_MAP.

[in] MapFlags

Тип: UINT

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

[out] ppData

Тип: void**

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

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

Тип: HRESULT

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

Комментарии

Сопоставление текстуры позволяет ЦП напрямую обращаться к базовым данным в подресурсе текстуры. Для успешного выполнения метода сопоставляемая текстура должна быть создана с соответствующими флагами (см. D3D10_CPU_ACCESS_FLAG), а указанное использование (см. D3D10_USAGE) должно быть либо D3D10_USAGE_DYNAMIC, либо D3D10_USAGE_STAGING.

Распространенные сбои методов Map указываются следующими возвращаемыми значениями:

Элемент Описание
DXGI_ERROR_WAS_STILL_DRAWING Если MapFlags указывает D3D10_MAP_FLAG_DO_NOT_WAIT, а GPU еще не завершен с ресурсом, функция Map возвращает DXGI_ERROR_WAS_STILL_DRAWING.
DXGI_ERROR_DEVICE_REMOVED Map возвращает DXGI_ERROR_DEVICE_REMOVED, если MapType разрешает доступ на чтение ЦП, а видео карта удален.
 

Дополнительные сведения о предыдущих возвращаемых значениях см . в разделе DXGI_ERROR.

Карта имеет следующие ограничения:

  • Один подресурс не может быть сопоставлен несколько раз; иными словами, не вызывайте map для уже сопоставленного подресурса.
  • Любой вложенный ресурс, привязанный к конвейеру, должен быть разархивирован перед выполнением любой операции отрисовки (то есть до выполнения ID3D10Device::D raw).
Приложения должны привести указатель void pData к соответствующему типу, чтобы получить осмысленный доступ к базовым данным подресурсов. Например, в следующем коде показано, как считывать каждый тексель подресурса 1D. Предполагается, что текстура была создана с помощью DXGI_FORMAT_R32G32B32A32_FLOAT и что pData является указателем на выходные данные ресурса текстуры при успешном вызове этого метода.

FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
  pTexels[col*4 + 0]; // Alpha
  pTexels[col*4 + 1]; // Blue
  pTexels[col*4 + 2]; // Green
  pTexels[col*4 + 3]; // Red
}

Различия между Direct3D 9 и Direct3D 10:

Сопоставление в Direct3D 10 аналогично блокировке ресурсов в Direct3D 9.

Требования

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

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

Интерфейс ID3D10Texture1D