Hello,
1- I would like to know how it works…
I am drawing a 3D model in a perspective view with a background. (no problem)
To do that I first draw the background :
glClear(...)
glOrtho(...)
disable my shader
// draw the background : a simple rectangle with colors in a vbo
glBindBuffer(GL_ARRAY_BUFFER,1)
glVertexPointer(3,GL_FLOAT,0,00000000)
glEnableClientState(GL_VERTEX_ARRAY)
glBindBuffer(GL_ARRAY_BUFFER,2)
glColorPointer(3,GL_FLOAT,0,00000000)
glEnableClientState(GL_COLOR_ARRAY)
glDrawArrays(GL_QUADS,0,8) GLSL=6
glDisableClientState(GL_COLOR_ARRAY)
glDisableClientState(GL_VERTEX_ARRAY)
glBindBuffer(GL_ARRAY_BUFFER,0)
enable my shader
Then I draw the 3D scene :
I have opengl 1.1 code with glvertex(…) functions.
In my shader version 110 (vertex + fragment) :
- I retrieve the vertex with the built-in variable gl_Vertex.
- I do not use attribute variables. I only use uniform variables.
- I use one uniform variable “myObjectColor” to set the color : gl_FragColor = myObjectColor;
Question :
Must I disable my shader before drawing my background ?
In other words : does my shader “see” my vbo ? Is it doing something ? Are the built-in variable gl_Vertex and gl_Color well defined ?
If the shader does something I think that I have to disable it because my uniform variable to set the color is not set during the background drawing.
2- This second question is only valid if the shader can be keeped enabled during the background drawing :
I tested without disabling the shader. It seems to work well except for the first frame : the background is black. After the first refresh it is ok.
I tried to see what is missing with glintercept but i haven’t seen anything… But something is wrong…
What can cause that ?
Thanks for your advices.