有没有办法获取ID3D11Texture2D *对象的数组,并将它们放在一个ID3D11Texture2D *(具有适当的ArraySize值)中,这样我就可以在HLSL中使用Texture2DArray?
至少,在将ArraySize设置为大于1之后,如何在创建新的ID3D11Texture2D对象时传递单个纹理?您是否需要传入一个SUBRESOURCE_DATA结构数组,每个结构都指向CreateTexture2D函数的纹理?我一直在寻找答案,但文档似乎严重缺乏。
感谢您提供的任何帮助。
答案 0 :(得分:4)
要将现有纹理复制到纹理数组,可以使用下面描述的目标子资源索引CopySubresourceRegion。
要使用初始数据创建新的纹理数组,请使用SUBRESOURCE_DATA结构数组指定多个子资源(数组切片/ mip级别)。子资源索引定义为mip slice + array slice * mip leves
。因此,对于2切片3-MIP纹理数组,您将拥有以下子资源:
[0]: slice 0 mip 0
[1]: slice 0 mip 1
[2]: slice 0 mip 2
[3]: slice 1 mip 0
[4]: slice 1 mip 1
[5]: slice 1 mip 2
以下页面对此进行了更详细的描述:http://msdn.microsoft.com/en-us/library/windows/desktop/ff476901(v=vs.85).aspx。