Hi again,
I was so happy to see everything working that the first machine I tested the code on (different from developing machine) display a empty texture (the one FBO uses as render to texture). In practice the one I specify here:
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, blurredTextureName, 0);
Summarizing: I am drawing the model shadow on a texture, blurring the shadow image and displaying the texture under the model (in two passes, using two textures).
The machine where everything works fine is:
ATI FireGL 7200
OpenGL version 2.0.6663
Shading language 1.10
The other, where the issue is present (shaders works on this machine, I installed renderMonkey and see all shaders effects):
ATI Radeon 9550 / X1050
OpenGL version 2.1.7873
Shading language 1.20
I attach the GLIntercept output to list exaclty what I am doing.
Do you see something wrong?
Thanks,
Alberto
Shader initialization and variable loading:
glGetString(GL_VERSION)="2.1.7873 Release"
glGetString(GL_SHADING_LANGUAGE_VERSION)="1.20"
glCreateShader(GL_FRAGMENT_SHADER)=1
glCreateShader(GL_FRAGMENT_SHADER)=2
glShaderSource(1,1,0x2481c0,0x0000)
glShaderSource(2,1,0x2481c0,0x0000)
glCompileShader(1)
glCompileShader(2)
glGetShaderiv(1,GL_COMPILE_STATUS,0x415d794)
glGetShaderiv(2,GL_COMPILE_STATUS,0x415d790)
glCreateProgram()=3
glAttachShader(3,1)
glLinkProgram(3)
glCreateProgram()=4
glAttachShader(4,2)
glLinkProgram(4)
glGetProgramiv(3,GL_LINK_STATUS,0x415d78c)
glGetProgramiv(4,GL_LINK_STATUS,0x415d788)
glUseProgram(3)
glGetUniformLocation(3,"BaseImage")=38
glGetUniformLocation(3,"Offset")=19
glGetUniformLocation(3,"KernelValue")=0
glUniform1i(38,0)
glUniform1fv(19,19,[-0.035156])
glUniform1fv(0,19,[0.007935])
glUseProgram(4)
glGetUniformLocation(4,"BaseImage")=38
glGetUniformLocation(4,"Offset")=19
glGetUniformLocation(4,"KernelValue")=0
glUniform1i(38,0)
glUniform1fv(19,19,[-0.035156])
glUniform1fv(0,19,[0.007935])
glUseProgram(0)
FBO preparation, drawing on texture, shader execution and FBO cleanup:
glGenFramebuffersEXT(1,0x133bafc)
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,1)
glBindTexture(GL_TEXTURE_2D,2)
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,256,256,0,GL_BGRA,GL_UNSIGNED_BYTE,0x0000)
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D,2,0)
glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)=GL_FRAMEBUFFER_COMPLETE_EXT
glBindTexture(GL_TEXTURE_2D,0)
/* drawing begins here */
glClearColor(0.000000,0.000000,0.000000,0.000000)
glClear(GL_COLOR_BUFFER_BIT)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(-7.308236,7.308236,-7.308236,7.308236,-1000000.000000,1000000.000000)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glMultMatrixf([1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000])
glTranslated(-2.500000,0.000000,-1.000000)
glViewport(0,0,256,256)
glDisable(GL_CULL_FACE)
glDisable(GL_DEPTH_TEST)
glDisable(GL_BLEND)
glDisable(GL_LIGHTING)
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL)
glColor3ub(0,0,0)
glCallList(522)
/* shaders execution */
glActiveTexture(GL_TEXTURE0)
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D,3,0)
glBindTexture(GL_TEXTURE_2D,2)
glUseProgram(3)
glEnable(GL_TEXTURE_2D)
glBegin(GL_QUADS) GLSL=3 Textures[ (0,2) ]
glTexCoord2f(0.000000,0.000000)
glVertex2d(-4.808236,-7.308236)
glTexCoord2f(1.000000,0.000000)
glVertex2d(9.808236,-7.308236)
glTexCoord2f(1.000000,1.000000)
glVertex2d(9.808236,7.308236)
glTexCoord2f(0.000000,1.000000)
glVertex2d(-4.808236,7.308236)
glEnd()
glDisable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D,3)
glUseProgram(4)
glEnable(GL_TEXTURE_2D)
glBegin(GL_QUADS) GLSL=4 Textures[ (0,3) ]
glTexCoord2f(0.000000,0.000000)
glVertex2d(-4.808236,-7.308236)
glTexCoord2f(1.000000,0.000000)
glVertex2d(9.808236,-7.308236)
glTexCoord2f(1.000000,1.000000)
glVertex2d(9.808236,7.308236)
glTexCoord2f(0.000000,1.000000)
glVertex2d(-4.808236,7.308236)
glEnd()
glDisable(GL_TEXTURE_2D)
glUseProgram(0)
/* FBO cleanup */
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0)
glDeleteFramebuffersEXT(1,0x133bb0c)