Практическое руководство. Инициализация текстуры программным способом
Вы можете инициализировать текстуру во время создания объекта или заполнить объект программным способом после его создания. В этом разделе содержится несколько примеров, показывающих, как инициализировать текстуры, созданные с различными типами использования. В этом примере предполагается, что вы уже знаете, как создать текстуру.
Использование по умолчанию
Наиболее распространенным типом использования является использование по умолчанию. Чтобы заполнить текстуру по умолчанию (созданную с помощью D3D11_USAGE_DEFAULT), можно выполнить одно из следующих действий:
Вызовите ID3D11Device::CreateTexture2D и инициализируйте pInitialData , чтобы указать данные, предоставленные из приложения.
или
После вызова ID3D11Device::CreateTexture2D используйте ID3D11DeviceContext::UpdateSubresource , чтобы заполнить текстуру по умолчанию данными из указателя, предоставленного приложением.
Динамическое использование
Чтобы заполнить динамическую текстуру (созданную с помощью D3D11_USAGE_DYNAMIC:
- Получите указатель на память текстуры, передав D3D11_MAP_WRITE_DISCARD при вызове ID3D11DeviceContext::Map.
- Запись данных в память.
- Вызовите ID3D11DeviceContext::Unmap после завершения записи данных.
Промежуточное использование
Чтобы заполнить промежуточную текстуру (созданную с помощью D3D11_USAGE_STAGING:
- Получите указатель на память текстуры, передав D3D11_MAP_WRITE при вызове ID3D11DeviceContext::Map.
- Запись данных в память.
- Вызовите ID3D11DeviceContext::Unmap после завершения записи данных.
Затем промежуточную текстуру можно использовать в качестве параметра источника для ID3D11DeviceContext::CopyResource или ID3D11DeviceContext::CopySubresourceRegion для заполнения ресурса по умолчанию или динамического ресурса.
Связанные темы