如何在glsl中为纹理着色

时间:2014-07-15 07:52:00

标签: colors textures glsl opengl-3 fragment-shader

我需要在运行时修改纹理的外观..

某些示例可能会使用灰度表示停用,橙色表示选择等等

一个更好地展示我想要实现目标的小例子

enter image description here

现在我的FS看起来很简单

#version 330

in vec2 fragmentUV;

out vec4 outputColor;

uniform sampler2D textureNode;

void main()
{    
    outputColor = texture(textureNode, fragmentUV).rgba;
}

我以为我可以通过将统一变量设置为某些硬编码值来控制这几种情况......

1 个答案:

答案 0 :(得分:1)

这就是你可以将图像转换为灰度的方法:http://glsl.heroku.com/e#18369.1

float grayScale = dot(imageColor.rgb, vec3(0.299, 0.587, 0.114));
if (IsGrayScale){
  gl_FragColor = vec4(grayScale, grayScale, grayScale, 1.0);
} else{
  gl_FragColor = imageColor;
}