首页 > 解决方案 > 在 glsl 中创建负纹理

问题描述

我正在尝试在 glsl 中实现一些简单的图像处理,例如从图像创建灰色和负纹理,但似乎我无法弄清楚为什么这在片段着色器中不起作用。样式 2 应该按预期将图片变成灰色作品,但样式 3 应该创建负图像只渲染空白图像。

#version 140

in  vec2 textureCoords;
out vec4 out_Color;

uniform sampler2D guiTexture;
uniform int style;

void main(void)
{
    if(style==1)
    {
        out_Color = texture(guiTexture,textureCoords);
    }
    else if(style==2)
    {
        out_Color = texture(guiTexture,textureCoords);
        float grayscale = (out_Color.x+out_Color.y + out_Color.z)/3;
        out_Color = vec4(grayscale,grayscale,grayscale,out_Color.w);
    }
    else if(style==3)
    {
        out_Color = texture(guiTexture,textureCoords);
        float Newr = (255.0 - out_Color.x);
        float Newg = (255.0 - out_Color.y);
        float Newb = (255.0 - out_Color.z);
        out_Color =vec4( Newr, Newg, Newb , out_Color.w);
    }
}

标签: openglimage-processing

解决方案


推荐阅读