Opengl glsl更新2D纹理的特定行

Opengl glsl更新2D纹理的特定行,opengl,glsl,shader,textures,Opengl,Glsl,Shader,Textures,我正在使用FBO和附加的纹理处理“渲染到纹理”功能 我的问题是,在片段着色器中,我不知道如何写入2D纹理的特定行。我确实有哪一行的信息(由一个统一的浮点变量表示),但我不知道如何在那里画图 这可能吗?或者什么是知道我在片段着色器中的位置的好方法 我的总体想法是从上到下渲染一维纹理到二维纹理的演变。每个演化步骤都由片段着色器计算(使用渲染到纹理乒乓方法,使用2个FBO)我认为片段着色器不适合此操作 如果只想写入FBO的一行,是否可以将绘制调用的顶点设置为仅与要绘制的像素重叠?可以使用放弃以丢弃不需

我正在使用FBO和附加的纹理处理“渲染到纹理”功能

我的问题是,在片段着色器中,我不知道如何写入2D纹理的特定行。我确实有哪一行的信息(由一个统一的浮点变量表示),但我不知道如何在那里画图

这可能吗?或者什么是知道我在片段着色器中的位置的好方法


我的总体想法是从上到下渲染一维纹理到二维纹理的演变。每个演化步骤都由片段着色器计算(使用渲染到纹理乒乓方法,使用2个FBO)

我认为片段着色器不适合此操作


如果只想写入FBO的一行,是否可以将绘制调用的顶点设置为仅与要绘制的像素重叠?

可以使用
放弃以丢弃不需要的片段。差不多

if (gl_FragCoord.y != row_to_keep)
    discard;

然后正常渲染场景,最后只写入一行输出。

我不确定您的意思。在绘制每个演化步骤时,保持移动一个小矩形?如果要将1像素高的1D纹理绘制到帧缓冲区,请生成1像素高、全屏宽度的四边形,将其转换为要绘制的行的高度,然后绘制。然后它将只在该行的像素上执行片段着色器。我明白。此外,我还需要在较旧的行中绘制较旧的状态,这是不断累积的。让我回答最后一部分:如果我删除glClear指令,我最终会得到一个在每次渲染过程中累积的帧,对吗?如果这是真的,我认为你的想法解决了问题。我认为我需要一个累积缓冲区