我的总体目标是能够创建一个将多个纹理作为输入并渲染到多个目标的像素着色器。以及通过初始化和完成着色器,通过重复运行此着色器,我将得到我的结果。
我之前创建了具有多个输入纹理的着色器,以及渲染到多个目标的着色器,但我从未将 2.
我认为引起问题的是我对语义缺乏充分理解,以及如何正确设置输入和输出纹理。
我已经看到了几种不同的获取输入纹理的方法,并且对应该如何设置感到困惑。
下面是由 init 和 itterate 着色器输出的共享结构的代码(最终着色器只输出颜色):
结构FRACTAL_OUTPUT { 浮动4迭代和控制:颜色0; float4 变量 1And2 : COLOR1; float4 变量 3And4 : COLOR2; };
下面是 itterate 和 finalize 着色器的纹理声明(初始化着色器不使用任何纹理):
Texture2D 迭代和控制; 采样器 IterationsAndControlSampler :寄存器(s4) { 纹理 = <IterationsAndControl>; };Texture2D 变量1和2; 采样器变量 1 和 2 采样器:寄存器(s5) { 纹理 = <IterationsAndControl>; };
Texture2D 变量3和4; 采样器Variables3And4Sampler:寄存器(s6) { 纹理 = <IterationsAndControl>; };
在 c# XNA 代码中,我设置渲染目标(通过执行 GraphicsDevice.SetRenderTargets() 然后设置纹理参数(通过执行 Effect.Parameter["TextureVariableName"].SetValue(),然后绘制四边形(通过精灵批处理)。
任何帮助将不胜感激,因为我找不到任何这样做的例子。