Практическое руководство. Инициализация текстуры программным способом

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

Использование по умолчанию

Наиболее распространенным типом использования является использование по умолчанию. Чтобы заполнить текстуру по умолчанию (созданную с помощью D3D11_USAGE_DEFAULT), можно выполнить одно из следующих действий:

  • Вызовите ID3D11Device::CreateTexture2D и инициализируйте pInitialData , чтобы указать данные, предоставленные из приложения.

    или

  • После вызова ID3D11Device::CreateTexture2D используйте ID3D11DeviceContext::UpdateSubresource , чтобы заполнить текстуру по умолчанию данными из указателя, предоставленного приложением.

Динамическое использование

Чтобы заполнить динамическую текстуру (созданную с помощью D3D11_USAGE_DYNAMIC:

  1. Получите указатель на память текстуры, передав D3D11_MAP_WRITE_DISCARD при вызове ID3D11DeviceContext::Map.
  2. Запись данных в память.
  3. Вызовите ID3D11DeviceContext::Unmap после завершения записи данных.

Промежуточное использование

Чтобы заполнить промежуточную текстуру (созданную с помощью D3D11_USAGE_STAGING:

  1. Получите указатель на память текстуры, передав D3D11_MAP_WRITE при вызове ID3D11DeviceContext::Map.
  2. Запись данных в память.
  3. Вызовите ID3D11DeviceContext::Unmap после завершения записи данных.

Затем промежуточную текстуру можно использовать в качестве параметра источника для ID3D11DeviceContext::CopyResource или ID3D11DeviceContext::CopySubresourceRegion для заполнения ресурса по умолчанию или динамического ресурса.

Использование Direct3D 11

Текстуры