2017-07-10 38 views
1

我目前正在使用SharpDX处理Windows混合现实应用程序,从另一个VR应用程序平台转换。在Mixed Reality上,API要求用户绘制一个提供的后台缓冲区,该缓冲区是一个大小为2的Texture2D数组(每个眼睛一个元素),但VR框架要求用户绘制两个手动提交的独立纹理。在SharpDX中,我如何从Texture2D数组中绘制单个Texture2D?

我希望能够将该阵列中的每个单独纹理元素作为独立的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 
    } 
}); 

操作上的两个目标对象的意见,仅应用于第一个。

回答

1

为了创建一个纹理阵列的切片视图,查看尺寸应该是:

Dimension = RenderTargetViewDimension.Texture2DArray 

使用的Texture2D会成功,但始终重视第一片来代替。

+0

This Works!谢谢! – TheHansinator