我想更改已附加到着色器的纹理上的单个像素。必须有一个简单的功能。
tex2D(sampler,uv) 用于读取并返回像素颜色。我需要一个函数来操纵像素颜色并将其写回到纹理上。这应该不难,但我找不到。
这不应该那么困难
是的,应该是。
任意写入纹理并不是一件微不足道或简单的事情。信息在 OpenGL 中以非常特定的方向流动:进入着色器。着色器允许的唯一输出(通常)是实际的着色器输出变量。例如,这就是您写入帧缓冲区的方式。顶点/几何着色器输出也可以用于变换反馈缓冲区。
现在,如果您有 GL 4.x 级硬件,您可以使用ARB_shader_image_load_store(这是 GL 4.2 中的核心)写入图像。但是,在您打开它的那一刻,您将全权负责同步对内存的访问。