如何:以程式設計方式初始化紋理
您可以在物件建立期間初始化紋理,也可以在建立物件之後以程式設計方式填滿物件。 本主題有數個範例,示範如何使用不同類型的使用方式來初始化所建立的紋理。 此範例假設您已經知道如何 建立紋理。
預設使用方式
最常見的使用類型是預設使用方式。 若要 (使用 D3D11_USAGE_DEFAULT 建立的預設紋理填滿) 您可以:
呼叫 ID3D11Device::CreateTexture2D 並初始化 pInitialData 以指向應用程式提供的資料。
或
呼叫 ID3D11Device::CreateTexture2D之後,請使用 ID3D11DeviceCoNtext::UpdateSubresource 以應用程式提供的指標將資料填滿預設紋理。
動態使用方式
若要填滿動態紋理, (使用 D3D11_USAGE_DYNAMIC) 建立的紋理:
- 呼叫ID3D11DeviceCoNtext::Map時傳入D3D11_MAP_WRITE_DISCARD,以取得紋理記憶體的指標。
- 將資料寫入記憶體。
- 當您完成寫入資料時,呼叫 ID3D11DeviceCoNtext::Unmap 。
暫存使用方式
若要填滿暫存紋理, (建立D3D11_USAGE_STAGING ) :
- 呼叫ID3D11DeviceCoNtext::Map時傳入D3D11_MAP_WRITE,以取得紋理記憶體的指標。
- 將資料寫入記憶體。
- 當您完成寫入資料時,呼叫 ID3D11DeviceCoNtext::Unmap 。
接著,暫存紋理可作為 ID3D11DeviceCoNtext::CopyResource 或 ID3D11DeviceCoNtext::CopySubresourceRegion 的來源參數,以填滿預設或動態資源。
相關主題