我正在尝试使用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纹理:
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纹理:
即使是120,我也希望得到150分的结果。 有什么问题?