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


Метод ID3D11DeviceContext2::CopyTiles (d3d11_2.h)

Копирует плитки из буфера в ресурс с плитками или наоборот.

Синтаксис

void CopyTiles(
  [in] ID3D11Resource                        *pTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D11Buffer                          *pBuffer,
  [in] UINT64                                BufferStartOffsetInBytes,
  [in] UINT                                  Flags
);

Параметры

[in] pTiledResource

Тип: ID3D11Resource*

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

[in] pTileRegionStartCoordinate

Тип: const D3D11_TILED_RESOURCE_COORDINATE*

Указатель на структуру D3D11_TILED_RESOURCE_COORDINATE , описывающую начальные координаты мозаичного ресурса.

[in] pTileRegionSize

Тип: const D3D11_TILE_REGION_SIZE*

Указатель на D3D11_TILE_REGION_SIZE структуру, описывающую размер области плитки.

[in] pBuffer

Тип: ID3D11Buffer*

Указатель на ID3D11Buffer , представляющий буфер по умолчанию, динамический или промежуточный буфер.

[in] BufferStartOffsetInBytes

Тип: UINT64

Смещение в байтах в буфере в pBuffer для запуска операции.

[in] Flags

Тип: UINT

Сочетание D3D11_TILE_COPY_FLAG типизированных значений, которые объединяются с помощью побитовой операции OR и определяют способ копирования плиток.

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

None

Remarks

CopyTiles удаляет операции записи в несопоставленные области и обрабатывает операции чтения из несопоставленных областей (за исключением Tier_1 фрагментированных ресурсов, где чтение и запись несопоставленных областей недопустимы).

Если операция копирования включает запись в одно и то же расположение памяти несколько раз, так как несколько расположений в целевом ресурсе сопоставлены с одной и той же памятью плитки, результирующие операции записи в многосоставные плитки являются недетерминированными и не повторяемыми; то есть доступ к памяти плитки происходит в любом порядке, в каком оборудование выполняет операцию копирования.

Плитки, участвующие в операции копирования, не могут содержать плитки, содержащие упакованные MIP-карты, или результаты операции копирования не определены. Чтобы передать данные на MIP-карты, которые оборудование упаковывает в одну или несколько плиток, составляющих упакованные mips, и из них, Для всей цепочки MIP-карты необходимо использовать стандартные API копирования и обновления (например , ID3D11DeviceContext1::CopySubresourceRegion1 и ID3D11DeviceContext1::UpdateSubresource1) или ID3D11DeviceContext::GenerateMips .

Структура памяти плиток на стороне ресурса некличного буфера операции копирования является линейной в памяти в пределах 64 КБ плиток, которые оборудование и драйвер свертывают и отменяют для каждой плитки при их передаче в ресурс с плиткой и из нее. Для поверхностей с сглаживания с несколькими выборками (MSAA) оборудование и драйвер просматривают выборки каждого пикселя в порядке выборки по индексу перед переходом к следующему пикселю. Для плиток, частично заполненных с правой стороны (для поверхности, ширина которого не кратна ширине плитки в пикселях), шаг и шаг для перемещения вниз по строке — это полный размер в байтах числа пикселей, которые поместятся по всей плитке, если плитка заполнена. Таким образом, между каждой строкой пикселей в памяти может быть разрыв. MIP-карты меньше, чем плитка, не упаковываются в линейный макет, что может показаться пустой тратой памяти, но, как уже упоминалось, вы не можете использовать CopyTiles или ID3D11DeviceContext2::UpdateTiles для копирования в MIP-карты, которые упаковывает оборудование. Вы можете просто использовать универсальные API копирования и обновления (например , ID3D11DeviceContext1::CopySubresourceRegion1 и ID3D11DeviceContext1::UpdateSubresource1) для копирования небольших MIP-карт по отдельности. Хотя в случае универсального API копирования (например , ID3D11DeviceContext1::CopySubresourceRegion1) линейная память должна иметь то же измерение, что и ресурс с плитками; ID3D11DeviceContext1::CopySubresourceRegion1 не может копировать из буферного ресурса в экземпляр Texture2D.

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

Требования

Требование Значение
Минимальная версия клиента Windows 8.1 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d3d11_2.h
Библиотека D3D11.lib

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

ID3D11DeviceContext2