你能在创建纹理的时候初始化,或者创建后填充数据。这篇文章将展示怎么初始化不同类型的纹理。
Default类型纹理:
Default为最常用的纹理类型,这个纹理用D3D11_USAGE_DEFAULT类型创建。你能用下面两种方法之一初始化纹理:
- 调用ID3D11Device::CreateTexture2D方法并且给pInitialData变量指定数据。
- 调用ID3D11Device::CreateTexture2D方法创建纹理之后,调用ID3D11DeviceContext::UpdateSubresource方法填充纹理数据。
Dynamic类型纹理:
此纹理用D3D11_USAGE_DYNAMIC类型创建,填充这个纹理数据方法如下:
- 通过调用ID3D11DeviceContext::Map方法并且指定D3D11_MAP_WRITE_DISCARD标志获取纹理数据内存指针。
- 写入数据到内存指针指向的地址。
- 当你写完数据调用ID3D11DeviceContext::Unmap方法。
Staging类型纹理:
此纹理用D3D11_USAGE_STAGING类型创建,填充这个纹理数据方法如下:
1.通过调用ID3D11DeviceContext::Map方法并且指定D3D11_MAP_WRITE标志获取纹理数据内存指针。
2.写入数据到内存指针指向的地址。
3.当你写完数据调用ID3D11DeviceContext::Unmap方法。
一个Staging类型的纹理可以作为ID3D11DeviceContext::CopyResource或者ID3D11DeviceContext::CopySubresourceRegion的源目标对象来填充defaut和dynamic类型的纹理。