我目前正在使用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
}
});
操作上的两个目标对象的意见,仅应用于第一个。
This Works!谢谢! – TheHansinator