在使用glsl的fft可视化中,从glsl 120重写为150

时间:2018-04-20 11:36:25

标签: c++ glsl shader fft openframeworks

我正在尝试使用GLSL制作fft纹理。 但是,虽然它是在当前版本150中创建的,但我认为我想将其重写为120版,但它不能正常工作, 我将粘贴下面的源代码,如果您知道原因,请告诉我。我很高兴。

glsl150.vert

#version 150
uniform mat4 modelViewProjectionMatrix;
in vec4 position;
in vec2 texcoord;

out vec2 vTexCoord;

void main(){
    vTexCoord = texcoord;
    gl_Position = modelViewProjectionMatrix * position;
}

glsl150.frag

#version 150

uniform sampler2DRect tex;
uniform float rawFft[256];
in vec2 vTexCoord;

out vec4 outputColor;

void main(){

    if (vTexCoord.y < 1.0) {
        int i = int(vTexCoord.x);
        outputColor.r = rawFft[i];
    } else {
        vec2 st = vTexCoord;
        st.y -= 1.0;
        outputColor.r = texture(tex, st).r;
    }
    outputColor.a = 1.0;
}

GLSL150 FFT纹理:

img



glsl120.vert

#version 120
#extension GL_ARB_texture_rectangle : enable

void main(){
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = gl_Vertex;
}

glsl120.frag

#version 120
#extension GL_ARB_texture_rectangle : enable

uniform sampler2D tex;
uniform float rawFft[256];

vec4 outputColor;

void main(){

    if (gl_TexCoord[0].y < 1.0) {
        int i = int(gl_TexCoord[0].x);
        outputColor.r = rawFft[i];
    } else {
        vec2 st = gl_TexCoord[0].st;
        st.y -= 1.0;
        outputColor.r = texture2D(tex, st).r;
    }
    outputColor.a = 1.0;

    gl_FragColor = outputColor;
}

GLSL120 FFT纹理:

img

即使是120,我也希望得到150分的结果。 有什么问题?

0 个答案:

没有答案