当前位置: 首页 > 知识库问答 >
问题:

如何在片段着色器中轻松更改纹理的像素颜色?(OpenGL)

尹凌龙
2023-03-14

我的目标是使用c和OpenGL进行简单的沙子模拟。现在我的计划是拥有一个2d像素颜色数组和一个相同大小的纹理。为了模拟沙子,我将根据沙子坐标和它必须移动的位置来更新数组。我正在考虑将2d像素阵列发送到片段着色器,并使用阵列上的颜色更新那里的纹理。问题是我找不到改变纹理上像素颜色的方法。

那么我如何改变纹理上特定坐标处像素的颜色呢?这样做真的可行吗?如果没有,还有什么办法?

共有1个答案

曹昊焱
2023-03-14

你是说纹理坐标吗?您可以仅更改片段颜色输出。你也有纹理颜色,但你只能用于边缘输出。

gl_FragColor = tex + vec4(0.5, 0, 0, 1)*tex.a;

用于混合操作

不管怎样,这里有更多关于碎片https://www.khronos.org/opengl/wiki/Fragment_Shader#Other_outputs的信息

 类似资料:
  • 我正在学习opengl,我认为我非常了解片段着色器。我的直觉是片段着色器应用于每个像素一次,但最近在处理纹理时,我对它们的确切工作方式感到困惑。 首先,片段着色器通常会获取一系列纹理坐标,因此如果我有一个四边形,片段着色器将获取四边形的4个角的纹理坐标。现在我不明白的是采样过程,即获取纹理坐标并在该纹理坐标处获得适当颜色值的过程。具体来说,由于我只提供4个纹理坐标,opengl如何知道为颜色值采样

  • 在一个简单的hello world OpenGL程序中,它只是在窗口上绘制一个静态三角形,当我将三角形的3个顶点设置为红色、绿色和蓝色时,三角形将填充渐变。 但是当我使用这样的着色器时: 顶点着色器: 其中属性和来自顶点缓冲区,通过的调用传递。 片段着色器: 三角形仍然充满了梯度,问题来了: 如果顶点着色器是按顶点计算的,则应为的每个实例指定顶点的颜色。顶点颜色应为红色、绿色或蓝色,如顶点缓冲区中

  • 问题内容: 我想从我的Fluke机器人那里得到一张图像,并确定图像中每个像素的颜色。然后,如果像素大部分为红色,请将其更改为完全绿色。如果像素大部分是绿色,请将其更改为完全蓝色。如果像素大部分是蓝色,请将其更改为完全红色。这是我能够做的,但是我无法使它工作以获取必须更改的图像。没有语法错误,这只是语义上的麻烦。我正在使用python。 我尝试的代码: 我也保存了如下图片: 问题答案: 我假设您正在

  • 问题内容: 我想打开jpeg图像文件,对其进行编码,更改一些像素颜色,然后将其保存回原样。 我想做这样的事情 我只是想不出一个可行的解决方案,因为编码图像文件后获得的默认图像类型没有Set方法。 谁能解释该怎么做?非常感谢。 问题答案: 成功解码后(以及特定的解码功能,如),返回的值。是一个接口,用于定义图像的只读视图:它不提供更改/绘制图像的方法。 该软件包提供了几种实现方式,这些实现方式通常允

  • 问题内容: 我需要在python中更改图像的像素颜色。除了像素值(255,0,0)红色外,我需要将每个像素颜色值更改为黑色(0,0,0)。我尝试了以下代码,但没有帮助。 问题答案: 参见此Wikibook:https : //zh.wikibooks.org/wiki/Python_Imaging_Library/Editing_Pixels 修改该代码以适合您的问题:

  • 标准着色器 Unity 标准着色器是一个内置着色器,具有非常全面的功能。它可以用于渲染『真实世界』的对象,例如,石头、木材、玻璃、塑料和金属,并支持各种各样的着色器类型和组合。通过使用或不使用材质编辑器中的各种纹理插槽和参数,可以很容易地启动或禁用其功能。 标准着色器还包括一个称为 物理着色器(Physically Based Shading,PBS) 的高级光照模型。物理着色器以模拟真实世界的方