我目前正在使用SharpDX开发Windows混合现实应用程序,从另一个VR应用程序平台转换。在混合现实中,API要求用户绘制一个提供的后缓冲区,该缓冲区是大小为2的Texture2D数组(每只眼睛一个元素),但VR框架要求用户绘制两个手动提交的单独纹理。
最好,我希望能够将此数组中的每个单独纹理元素作为单独的Texture2D提取,这样我的VR后端仍然可以正常地绘制到这些纹理。混合现实样本应用程序在此方向上没有提供任何帮助,因为它使用实例化绘制调用一次绘制到两个纹理。是否有可能在DirectX中获取对单个纹理的引用,或者我是否必须更改后端才能使用该数组?
编辑:根据文档,我发现RenderTargetViews似乎是渲染到一个资源的方式,就好像它是一个不同的资源,包括渲染到数组切片如果它是一个单一的纹理。但是,当我使用此格式创建两个渲染目标视图时,
RenderTargetView l_target_view = new RenderTargetView(cameraBackBuffer.Device, cameraBackBuffer, new RenderTargetViewDescription()
{
Format = (SharpDX.DXGI.Format)parameters.Direct3D11BackBuffer.Description.Format,
Dimension = RenderTargetViewDimension.Texture2D,
Texture2DArray = new RenderTargetViewDescription.Texture2DArrayResource()
{
ArraySize = 1,
FirstArraySlice = 0
}
});
RenderTargetView r_target_view = new RenderTargetView(cameraBackBuffer.Device, cameraBackBuffer, new RenderTargetViewDescription()
{
Format = (SharpDX.DXGI.Format)parameters.Direct3D11BackBuffer.Description.Format,
Dimension = RenderTargetViewDimension.Texture2D,
Texture2DArray = new RenderTargetViewDescription.Texture2DArrayResource()
{
ArraySize = 1,
FirstArraySlice = 1
}
});
两个目标的操作仅适用于第一个目标。
答案 0 :(得分:1)
要为纹理数组创建切片视图,视图尺寸应为:
Dimension = RenderTargetViewDimension.Texture2DArray
使用Texture2D会成功,但总是会附加第一个切片。