GLSL更改纹理的像素颜色

GLSL更改纹理的像素颜色,glsl,textures,shader,pixel,Glsl,Textures,Shader,Pixel,我想更改已附加到着色器的纹理上的单个像素。 必须有一个简单的函数 tex2D(采样器,uv)用于读取并返回像素颜色。 我需要一个函数来操纵像素的颜色并将其写回纹理。 那应该没那么难,但我找不到 这应该没那么难 是的,应该是 任意写入纹理不是一件琐碎或简单的事情。在OpenGL中,信息以非常特定的方向流动:进入着色器。着色器允许的唯一输出(通常)是实际着色器输出变量。例如,这就是写入帧缓冲区的方式。顶点/几何体着色器输出也可以馈送到变换反馈缓冲区 现在,如果您有GL 4.x类硬件,您可以使用(这是

我想更改已附加到着色器的纹理上的单个像素。 必须有一个简单的函数

tex2D(采样器,uv)用于读取并返回像素颜色。 我需要一个函数来操纵像素的颜色并将其写回纹理。 那应该没那么难,但我找不到

这应该没那么难

是的,应该是

任意写入纹理不是一件琐碎或简单的事情。在OpenGL中,信息以非常特定的方向流动:进入着色器。着色器允许的唯一输出(通常)是实际着色器输出变量。例如,这就是写入帧缓冲区的方式。顶点/几何体着色器输出也可以馈送到变换反馈缓冲区


现在,如果您有GL 4.x类硬件,您可以使用(这是GL 4.2的核心)写入图像。但是,一旦打开此选项,您就会发现。

为什么需要回写纹理?你不能在片段着色器中动态地为像素输出正确的颜色吗?如果它总是在相同的UV坐标上,那么这样做不会花费太多。顶点和片段着色器不是用来写入数据的,只是用来改变opengl数据的渲染。