Arrays 纹理2D阵列作为HLSL像素着色器中的渲染目标

Arrays 纹理2D阵列作为HLSL像素着色器中的渲染目标,arrays,textures,hlsl,texture2d,pixel-shader,Arrays,Textures,Hlsl,Texture2d,Pixel Shader,目前,我需要从我的渲染过程(法线、深度和颜色)中获得几个纹理的每像素数据 而不是使用基本相同(WorldViewPos乘法等)但各自向渲染目标中的纹理输出不同类型数据的着色器运行三个过程(例如,一个过程用于颜色,一个过程用于深度,一个过程用于法线);我想使用Texture3D对象或理想情况下使用Texture2D数组作为像素着色器的渲染目标。这样,我可以将这三个渲染过程减少为一个,并一次性输出所有数据 不幸的是,我发现的唯一示例是几何体着色器。有没有一种方法可以指定纹理数组中要将数据发送到像素着

目前,我需要从我的渲染过程(法线、深度和颜色)中获得几个纹理的每像素数据

而不是使用基本相同(WorldViewPos乘法等)但各自向渲染目标中的纹理输出不同类型数据的着色器运行三个过程(例如,一个过程用于颜色,一个过程用于深度,一个过程用于法线);我想使用Texture3D对象或理想情况下使用Texture2D数组作为像素着色器的渲染目标。这样,我可以将这三个渲染过程减少为一个,并一次性输出所有数据


不幸的是,我发现的唯一示例是几何体着色器。有没有一种方法可以指定纹理数组中要将数据发送到像素着色器内部的哪个纹理?

您要查找的是“多个渲染目标”

可以使用
GraphicsDevice.SetRenderTargets
(,)设置多个渲染目标

通过对第一个目标输出到
COLOR0
(the),对第二个目标输出到
COLOR1
,依此类推,可以在HLSL像素着色器中输出到多个渲染目标

最后,您必须使用配置文件,该配置文件允许同时设置最多4个渲染目标


编辑:我刚刚意识到我给出了一个XNA答案——但实际上你根本没有用API来标记这个问题。HLSL应该与DirectX、SlimDX等相同。要在DirectX中设置渲染目标,我认为您需要
IDirect3DDevice9::SetRenderTarget
()。

谢谢,这正是我所需要的,但我在实现方面遇到了问题。我开始了一个新的问题,因为我必须粘贴大量的数据才能进行elabourate。可以在这里找到: